7
votes

Comment déclarer Printf ()?

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: xxx

est le programme ci-dessus correct? < / p>


4 commentaires

Votre chaîne de format doit être Const Char * . Vous pouvez simplement localiser stdio.h et lisez la définition là-bas. Pourquoi, par curiosité, ne voulez-vous pas #include ?


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 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.


5 Réponses :


12
votes

juste: xxx

Il vous dira printf Signature: xxx

C'est la bonne .


0 commentaires

4
votes

Je ne sais pas pourquoi vous voudriez faire cela.

mais il devrait être const char * .


7 commentaires

@Oli: Cela n'affecte que quelque chose?


@Chals: en C99, oui. Cela ne compilera rien pour rien plus tôt.


@Charles Just Const Char * Ici.


@Happy Oui, il définit une fonction complètement différente de celle de printf (const char *, ...) .


@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 d'omettre le const , 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.



18
votes

La correction correcte (ISO / IEC 9899: 1999) est la suivante: xxx

mais ce serait le plus simple et le plus sûr de #include .


0 commentaires

-3
votes
int printf(char *, ...);
works just fine, I don't know why people are telling you that char needs to be a const

0 commentaires

0
votes

Voici une autre version de la déclaration: xxx


0 commentaires