2010-09-20 7 views
3

Confession: Je suis un novice.En ce qui concerne stdio.h

Question: Je vérifiais stdio.h, mais je n'ai pas pu trouver la définition de la fonction fopen. Quelqu'un peut-il dire où je peux trouver la définition?

concerne,

bug.

+0

que le compilateur et le système d'exploitation utilisent-ils? – Anycorn

+0

Voulez-vous dire la 'déclaration' de la fonction fopen? – Bill

+0

os: mac os x 10,5,8; gcc 4.0.1 – babon

Répondre

2

Si vous utilisez Linux ou Unix, vous pouvez le trouver avec:

man fopen 

Sinon, google pour man fopen et vous trouverez.

Vous pouvez utiliser man pour à peu près n'importe quelle fonction de bibliothèque standard.

+0

Ce n'est pas la réponse qu'il cherche. Il veut trouver la ligne dans stdio.h où la fonction fopen est définie. –

+0

Ce n'est pas ce qu'il a dit. Il a demandé, "* Est-ce que quelqu'un peut dire s'il vous plaît où puis-je trouver la définition? *" –

2
extern FILE *fopen (__const char *__restrict __filename, 
        __const char *__restrict __modes) __wur; 

Comme vous l'avez dit, dans stdio.h.

+0

Où se trouve probablement 'stdio.h'? –

+0

Sur les systèmes UNIX, dans '/ usr/include'. –

0

alternativement, vous pouvez aller sur http://cplusplus.com/ sous la référence -> C Library -> cstdio (stdio.h)

+1

Ceci est une référence pour stdio.h, mais il ne répond pas à la question "où puis-je trouver la définition de fopen". Il regarde le code source, essayant de trouver une ligne de code. –

3

la déclaration devrait être dans stdio.h (afaik la norme l'exige), mais ce n'est pas probablement que vous allez trouver la définition il *. Si vous utilisez un os open source, il contient probablement des paquets contenant le code source (contenant la définition) que vous pouvez télécharger. Sinon, désolé, aucune définition disponible.

* en supposant que l'auteur considère définition signifie la mise en œuvre effective alors que déclaration se réfère plutôt fonctionner prototype

+0

Même sous Windows, le code source du CRT est disponible si Visual Studio est installé. Par exemple, la source de 'fopen' peut être trouvée dans C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ crt \ src \ fopen.c, ou similaire. –

+0

vous avez raison, mais je pense que vous obtenez seulement si vous achetez VS, non? Ou est-il disponible avec les versions Express? – stijn

0

J'ai trouvé sourcecode here. ne suis pas un C-Coder afin de vérifier le résultat par vous-même. Pour autant que je sache, cela ressemble à une implémentation réelle. Mais même si ce n'est pas la "vraie" implémentation, elle peut au moins donner des biches aux yeux d'apprentissage. Il devrait donc être utile de connaître ce fichier.

0

La mise en œuvre de fopen() pour OS X (qui est ce que le questionneur demande au sujet) est disponible sur opensource.apple.com:

http://opensource.apple.com/source/Libc/Libc-498.1.7/stdio/fopen-fbsd.c

Je suis curieux, cependant, à pourquoi vous le cherchez; Une partie de l'intérêt des bibliothèques est que vous n'avez pas besoin de connaître les détails de leur fonctionnement pour pouvoir les utiliser efficacement - vous devez seulement savoir comment les lier et quelles sont les fonctions définies.