Je voulais imprimer quelque chose à l'aide de la fonction printf () en C, sans y compris stdio.h, donc j'ai écrit le programme comme: est le programme ci-dessus correct? P> < / p>
5 Réponses :
juste: Il vous dira C'est la bonne . p> p> printf code> Signature: p>
Je ne sais pas pourquoi vous voudriez faire cela. P>
mais il devrait être const char * code>. p>
@Oli: Cela n'affecte que quelque chose?
@Chals: en C99, oui. Cela ne compilera rien pour rien plus tôt.
@Charles Just Const Char * Code> Ici.
@Happy Oui, il définit une fonction complètement différente de celle de printf (const char *, ...) code>.
@meauger: Si je n'écris pas Const, alors n'est-il pas garanti que le printf de la bibliothèque est appelé?
@meagar: Ce n'est pas C ++. Je suis d'accord c'est mal i> d'omettre le const code>, mais il ne "définit pas une fonction complètement différente", seul un prototype incorrect pour la même fonction. (Je soupçonne que ce mauvais prototype est en fait garanti de travailler de toute façon, mais je ne suis pas sûr.)
@Happy Mittal: Si vous n'incluez pas tous les qualificateurs de type requis, vous avez fourni un prototype de fonction qui n'est pas compatible avec la définition de la fonction. C n'a pas de surcharge de fonction afin que vous ne puissiez pas faire référence à une autre fonction, mais essayant de l'appeler avec un prototype incompatible dans la portée qui conduit techniquement à un comportement non défini.
La correction correcte (ISO / IEC 9899: 1999) est la suivante: mais ce serait le plus simple et le plus sûr de #include
int printf(char *, ...); works just fine, I don't know why people are telling you that char needs to be a const
Voici une autre version de la déclaration:
Votre chaîne de format doit être
Const Char * Code>. Vous pouvez simplement localiserstdio.h code> et lisez la définition là-bas. Pourquoi, par curiosité, ne voulez-vous pas#include code>? Comment vous attendez-vous à imprimer quelque chose à l'écran sans y compris stdio.h ?? Vous devrez écrire vos propres bibliothèques .. c'est suicidal :)
@Bemace @vic L'acte d'inclure
stdio.h code> ne relie rien, les fichiers d'en-tête ne fonctionnent pas de cette façon. Cette question est complètement valide et fonctionnera très bien.@meager: c'était juste une question de quiz.