#include <stdio.h>
#define main() main(){printf("hi");}int i()
main()
{//empty main
}
ce qui est l'utilisation de int i()
ce qui est l'utilisation d'int i()
#include <stdio.h>
#define main() main(){printf("hi");}int i()
main()
{//empty main
}
ce qui est l'utilisation de int i()
ce qui est l'utilisation d'int i()
C'est un programme assez stupide, mais le but de la int i()
est pour qu'il compilera - les accolades à la fin:
{//empty main
}
provoquera une erreur s'il n'y a pas une déclaration de fonction incluse dans la déclaration #define
. Si je le supprimer, gcc donne l'erreur:
testfile.c:4: error: expected identifier or ‘(’ before ‘{’ token
Vous pouvez utiliser le drapeau -E
gcc pour voir pourquoi le int i()
est nécessaire - il vous montrera la sortie du préprocesseur sans compilation.
Pensez à ce que vous obtenez si vous développez la main()
macro dans le programme:
#include <stdio.h>
main(){printf("hi");}int i()
{//empty main
}
L'on a besoin d'int i()
pour faire le reste { ... }
partie d'une définition de fonction syntaxiquement valide. En ce qui concerne l'intention, je peux seulement deviner que le point de la macro est de remplacer le main
existant par un bout. C'est un peu IMO.
merci .. j'ai compris. – elle
Dans ce code main()
sera étendu et le résultat se terminera par
int i()
{//empty main
}
what is the use of
int i()
Il rend la sortie d'un très étrange et cassé compilable macro
#include <stdio.h>
#define main() main(){printf("hi");}int i()
main()
{//empty main
}
I guess int i() is another preprocessor directive which should be called in the program after main.
Votre code n'a pas de sens . Je l'ai édité mais je viens de mettre tout juste quatre espaces vers la droite. En l'état, 'int i();' est un prototype pour une fonction 'i' qui retourne un' int' et ne prend aucun argument. – aaronasterling
@aaron Il construit, il se transforme juste en deux fonctions 'main() {printf (" hi ");}' et 'int i() {}', mais cette macro est assez absurde. C'est une sorte de sorcellerie maléfique pour remplacer 'main', et je détesterais vraiment jamais rencontrer cela dans le code réel –
@Michael, je n'ai jamais dit qu'il ne construisait pas;) J'ai raté les accolades en faisant une définition et pas un prototype cependant. – aaronasterling