2012-06-18 4 views
-2

Par exemple:Visual Studio ne voir déclaration de fonction dans certains cas

void main(){ 
foo1(); 

} 

fooTarget(); 
foo1(foo2();); 
foo2(foo3();); 
foo3(foo4();); 
foo4(foo5();); 
foo5(
foo6(); 
fooTarget(); //Identifier not found 
); 
foo6(
fooTarget(); //It Works! 
); 

quel est-il? si je coller le code de fooTarget() à foo5() il fonctionne trop

A réduit testcase du code réel:

#include <cstring> 

int main() { 
    char word[] = "hey"; 
    int wordSize = getWordLenght(word); // error: getWordLenght not declared 
} 

int getWordLenght(char *word){ 
    return strlen(word); 
} 
+3

Je suis surpris de constater que 'foo5 (foo6(); fooTarget(););' compile tout. Je ne suis pas du tout sûr de ce que cela signifierait. Lorsque j'essaie de compiler votre code ci-dessus, j'obtiens * beaucoup * d'erreurs. Le réarranger pour que les déclarations précèdent l'utilisation dans 'main' en élimine certaines, mais laisse toujours beaucoup de choses sur' l'erreur de syntaxe, manquante ")" avant ";" '. –

+0

Je suis surpris aussi, je peux fournir le code où j'ai ce problème – mishkapp

+1

Je pense qu'un vrai code qui affiche (seulement) l'erreur qui vous concerne serait extrêmement utile. Ce que vous avez posté ci-dessus a tellement d'erreurs qu'il est difficile de deviner ce qui vous intéresse. –

Répondre

2

Dans le code que vous avez posté dans les commentaires, vous utilisez une fonction qui n'a pas encore été déclarée. Il est déclaré plus tard, mais C++ ne regarde pas les déclarations ultérieures pour résoudre les fonctions.

De plus, le 'th' digramme est orthographié 'e', ​​pas 'ht'

+0

Pour ajouter à cela, vous pouvez utiliser un prototype de fonction comme une déclaration si vous voulez mettre l'implémentation après l'emplacement où vous effectuez vos appels si vous le souhaitez. – Dennis

0
foo5(
foo6(); 
fooTarget(); //Identifier not found 
); 

Si vous supprimez des sauts de ligne, ce sera analysé comme:

foo5(foo6(); fooTarget();); 

Ce qui, bien sûr, n'est pas un code C++ correct.

Vous avez beaucoup d'autres erreurs dans votre code posté. Par exemple, vous ne spécifiez aucun type de retour pour l'un de vos prototypes de fonctions - en supposant qu'ils soient destinés à être des prototypes.

Questions connexes