du programme> en C / C

A

Aider

Guest
Hai ...

N'importe qui peut m'aider pour expliquer le programme ...

1) La fonction de base mian ...

a) main ()
(
)

b) void main ()
(
)

c) void main (void)
(
)

d) int main ()
(
)

2) ce que les différents entre cette fonction 3 ...

void DELAY (int);
void DELAY (unsigned int);
void DELAY (const unsigned int);

Merci

 
Je ne suis pas sûr ce que vous demandez.

1.Pour ANSI C standard, ce sont tous les incorrecte.Voici les deux méthodes correctes:

int main (void)
(
return 0;
)

int main (int argc, char * argv [])
(
return 0;
)

2.Ces fonctions ne sont pas, ils sont les prototypes de fonctions.La différence est chacun passe un autre type d'argument à la fonction.

C et C sont des langues différentes.Dire lequel vous voulez dire.Il n'y a rien de tel que C / C .

 
echo47 a écrit:

1.
Pour ANSI C, ce sont tous les incorrecte.
Voici les deux méthodes correctes:int main (void)

(

return 0;

)int main (int argc, char * argv [])

(

return 0;

)2.
Ces fonctions ne sont pas, ils sont les prototypes de fonctions.
La différence est chacun passe un autre type d'argument à la fonction.
 
La raison est très subtile et a à voir avec la façon dont le compilateur fonctionne.En C, après avoir compilé le fichier source qui a «principal» en elle, vous obtenez un objet.Mais aucune information sur le type de «main» est allé dans cet objet.Autrement dit, l'éditeur de liens (qui doit être appelée pour obtenir le fichier exécutable) voit final que le symbole «principal» exportés dans l'objet, il ne dispose d'aucune information sur le nombre et les types de paramères et sa valeur de retour.Il voit également que «main» est référencée dans le fichier de démarrage (ce doit être lié aussi à l'exécutable final) et il vient résoudre le symbole, il ne se soucie pas de son type.Les choses sont un peu différentes en C , mais pas pour les «principaux».En C , «principale» est déclaré comme "C externe" par défaut, donc présentant le même comportement que dans le C. Les autres fonctions (celles qui ne sont pas précédés du préfixe «C extern") utilisent un système appelé mangling «nom» que encode les informations de type avec le nom de la fonction pour obtenir une unique fonction "signature".De cette façon, les ambiguïtés type sont résolus.Comme indiqué précédemment, le formulaire standard pour «principal» est la suivante:

Code:

int main (int argc, char * argv [])
 
has been obsolete for over 15 years.

En C, main ()
a été dépassée pendant plus de 15 ans.C'est dès les premiers jours avant de prototypes de fonction, avant que la norme ANSI.
is simply wrong.

void main ()
est tout simplement faux.Si vous voyez un livre qui enseigne cette erreur, s'il vous plaît jeter le livre dans la corbeille.Vous ne voulez pas apprendre le C à partir d'un enseignant bâclée.

http://www.eskimo.com/ ~ scs/C-faq/q11.15.html

Cette FAQ C est plein de petits morceaux savoureux.Voici une section de la norme C 1999:5.1.2.2.1 démarrage du programme
1 La fonction appelée au démarrage du programme est nommé principal.
La mise en œuvre ne déclare pas de prototype de cette fonction.
Elle est définie avec un type de retour de l'INT et sans paramètres:
int main (void) (/ * ...
* /)
ou avec deux paramètres (appelé ici argc et argv, si tous les noms peuvent être utilisés, car ils correspondent à la fonction dans laquelle ils sont déclarés):
int main (int argc, char * argv []) (/ * ...
* /)
ou l'équivalent, ou dans certains implémentation autre manière.
2 Si elles sont déclarées, les paramètres à la fonction principale doit se conformer aux suivantscontraintes:
- La valeur des argc est positive ou nulle.
- Argc [] argv est un pointeur NULL.
- Si la valeur de argc est supérieure à zéro, les membres argv array [0] à] 1 argv [argc-inclusive doit contenir des pointeurs vers des chaînes, qui sont données, la mise en œuvre des valeurs définies par le milieu d'accueil avant le démarrage du programme.
L'objectif est de fournir à l'information sur le programme établi avant démarrage du programme d'ailleurs dans les environnement hébergé.
Si le milieu d'accueil n'est pas capable de fournir des chaînes de caractères avec des lettres en majuscules et minuscules, la mise en œuvre veillent à ce que les chaînes sont reçues en minuscules.
- Si la valeur de argc est supérieure à zéro, la chaîne pointée par argv [0] représente le nom du programme; argv [0] [0] est le caractère NULL si le nom du programme n'est pas disponible à partir du milieu d'accueil.
Si la valeur de argc est supérieur à un, les cordes pointé par argv [1] à argv [argc-1] représentent les paramètres du programme.
- Les paramètres argc et argv et les cordes, pointé par le tableau argv est modifiable par le programme, et de conserver leurs valeurs stockées dernier entre le démarrage du programme et la fin du programme.

Dernière édition par echo47 le 25 Mar 2005 9:00, édité 3 fois au total

 
bogdanm a écrit:

La raison est très subtile et a à voir avec la façon dont le compilateur fonctionne.
En C, après avoir compilé le fichier source qui a «principal» en elle, vous obtenez un objet.
Mais aucune information sur le type de «main» est allé dans cet objet.
Autrement dit, l'éditeur de liens (qui doit être convoquée pour obtenir le voit final exécutable) que le symbole «main» exportés dans l'objet, il ne dispose d'aucune information sur le nombre et les types de paramères et sa valeur de retour.
Il voit également que «main» est référencée dans le fichier de démarrage (ce doit être lié aussi à l'exécutable final) et il vient résoudre le symbole, il ne se soucie pas de son type.
Les choses sont un peu différentes en C , mais pas pour les «principaux».
En C , «principale» est déclaré comme "C externe" par défaut, donc présentant le même comportement que dans le C. Les autres fonctions (celles qui ne sont pas précédés du préfixe «C extern") utilisent un système appelé mangling «nom» que encode les informations de type avec le nom de la fonction pour obtenir une unique fonction "signature".
De cette façon, les ambiguïtés type sont résolus.
Comme indiqué précédemment, le formulaire standard pour «principal» est la suivante:Code:

int main (int argc, char * argv [])
 
Il pourrait être possible que void main (void) compile avec le compilateur, mais il est faux!
L'INT est utilisée pour retourner une valeur ajoutée au processus qui démarre le programme tu viens d'écrire.

Il est juste écrit comme cela dans la norme ANSI C si vous devez l'utiliser comme ça.
Il la même que la rédaction d'un texte.Lorsque vous faites des fautes d'orthographe, il pourrait être possible que l'un lecteur comprend ce que vous entendez et l'autre n'a pas.Mais il n'est pas juste de faire ces erreurs!

En ce qui concerne votre deuxième question
Ils sont différents dans le type de paramètre que vous passez à la fonction.
La première est une valeur signée (par exemple, de -32767 à 32767)
la seconde est une valeur non signée (par exemple 0 à 65535)
la troisième est une valeur constante non signé (ce qui signifie qu'il ne peut être modifié dans la fonction)
certains compilateurs pour les microcontrôleurs à architecture Harvard (programme de Split et de bus de données) d'utiliser cette option pour spécifier si le paramètre est une valeur en RAM ou ROM.

En C, vous pouvez avoir qu'une seule de ces fonctions dans votre programme à la fois.En C vous pouvez avoir tous en même temps (il supporte la surcharge)

Antharax

 
int main (int argc, char * argv [])
(
return 0;
)Si vous enregistrez le fichier: et le résultat est le fichier exécutable test.c test.exe

Si vous exécutez test.exe avec comme paramètre:

test.exe paramètre1 paramètre2

int argc résultat est 2, char * argv [0] est paramètre1, char * argv [1] est paramètre2

 
Antharax a écrit:

Il pourrait être possible que void main (void) compile avec le compilateur, mais il est faux!

L'INT est utilisée pour retourner une valeur ajoutée au processus qui démarre le programme tu viens d'écrire.Il est juste écrit comme cela dans la norme ANSI C si vous devez l'utiliser comme ça.

Il la même que la rédaction d'un texte.
Lorsque vous faites des fautes d'orthographe, il pourrait être possible que l'un lecteur comprend ce que vous entendez et l'autre n'a pas.
Mais il n'est pas juste de faire ces erreurs!En ce qui concerne votre deuxième question

Ils sont différents dans le type de paramètre que vous passez à la fonction.

La première est une valeur signée (par exemple, de -32767 à 32767)

la seconde est une valeur non signée (par exemple 0 à 65535)

la troisième est une valeur constante non signé (ce qui signifie qu'il ne peut être modifié dans la fonction)

certains compilateurs pour les microcontrôleurs à architecture Harvard (programme de Split et de bus de données) d'utiliser cette option pour spécifier si le paramètre est une valeur en RAM ou ROM.En C, vous pouvez avoir qu'une seule de ces fonctions dans votre programme à la fois.
En C vous pouvez avoir tous en même temps (il supporte la surcharge)Antharax
 
S'il vous plaît vous procurer un livre et la lecture C bon début!

"Le C Programming Language", deuxième édition, par Kernighan et Ritchie.C'est un petit livre efficace, tout comme la langue.Largement dénommé simplement «K & R".
http://www.amazon.com/exec/obidos/asin/0131103628/

Si vous préférez de longue haleine livres tutoriel, j'ai feuilleté celui-ci et il semble bon: "C Programming - Une approche moderne» par KN King.
http://www.amazon.com/exec/obidos/asin/0393969452/

 
echo47 a écrit:

S'il vous plaît vous procurer un livre et la lecture C bon début!"Le C Programming Language", deuxième édition, par Kernighan et Ritchie.
C'est un petit livre efficace, tout comme la langue.
Largement dénommé simplement «K & R".

h ** p: / / www.amazon.com/exec/obidos/asin/0131103628/Si vous préférez de longue haleine livres tutoriel, j'ai feuilleté celui-ci et il semble bon: "C Programming - Une approche moderne» par KN King.

h ** p: / / www.amazon.com/exec/obidos/asin/0393969452/
 
Je n'ai pas vu le livre King n'importe où, mais K & R est assez facile à trouver sur les réseaux de partage de fichiers P2P.Je vais chercher un peu et si je trouve un lien, je vais vous PM.

Bien que K & R est un grand livre, il a été publié en 1988, avant la norme ANSI 1999.Vous verrez des choses anciennes, comme main () sans int explicite ou valeur de retour.

 
echo47 a écrit:

Je n'ai pas vu le livre King n'importe où, mais K & R est assez facile à trouver sur les réseaux de partage de fichiers P2P.
Je vais chercher un peu et si je trouve un lien, je vais vous PM.Bien que K & R est un grand livre, il a été publié en 1988, avant la norme ANSI 1999.
Vous verrez des choses anciennes, comme main () sans int explicite ou valeur de retour.
 
echo47 a écrit:Bien que K & R est un grand livre, il a été publié en 1988, avant la norme ANSI 1999.
Vous verrez des choses anciennes, comme main () sans int explicite ou valeur de retour.
 
Silvio a écrit:echo47 a écrit:Bien que K & R est un grand livre, il a été publié en 1988, avant la norme ANSI 1999.
Vous verrez des choses anciennes, comme main () sans int explicite ou valeur de retour.
 
Question 1:

a) l'ensemble est mal
b) et c) est le même pour le programme principal à la valeur de non retour
d) est utilisé pour la valeur de retour si cetain u appelé ce progemme d'un autre

Question 2:

début, c'est juste un des prototypes de fonctions présentées

deuxième
a) si u écrire int u ne peut passer une valeur négative
et en fonction du retard dans DOC.h qu'il ne soit pas une valeur négative

b) il est bon de le wite sous cette forme

c) Je ne sais pas exactement ce que cela signifie.

 
Citation:Citation:

suromenggolo a écrit:

int main (int argc, char * argv [])

(

return 0;

)Si vous enregistrez le fichier: le fichier test.c et le résultat est exécutable test.exeSi vous exécutez test.exe avec comme paramètre:test.exe paramètre1 paramètre2int argc résultat est 2, * argv char [0] est paramètre1, * argv char [1] est paramètre2

 

Welcome to EDABoard.com

Sponsor

Back
Top