Visual Studio在某些情况下看不到函数声明

时间:2012-06-18 16:12:04

标签: c++ visual-studio-2010

例如:

void main(){
foo1();

} 

fooTarget();
foo1(foo2(););
foo2(foo3(););
foo3(foo4(););
foo4(foo5(););
foo5(
foo6();
fooTarget(); //Identifier not found
);
foo6(
fooTarget(); //It Works!
);
这是什么? 如果我将代码从fooTarget()粘贴到foo5()它也可以

从实际代码中减少的测试用例:

#include <cstring>

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

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

2 个答案:

答案 0 :(得分:2)

在您在评论中发布的代码中,您正在使用尚未声明的函数。它稍后声明,但C ++不会考虑以后的声明来解析函数。

此外,'th'有向图拼写'th',而不是'ht'

答案 1 :(得分:0)

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

如果删除换行符,则会将其解析为:

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

当然,这不是正确的C ++代码。

您发布的代码中还有很多其他错误。例如,您没有为任何函数原型指定返回类型 - 假设它们是原型。