在尝试编译库(flextGL)时,我遇到了一个奇怪的编译器错误(使用VC2010),这对我来说完全没有意义.
考虑以下最小C示例(test.c):
void a()
{
// ...
}
int b()
{
a();
int c;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试在VC2010下编译它,我会收到以下错误:
test.c(10) : error C2143: syntax error : missing ';' before 'type'
Run Code Online (Sandbox Code Playgroud)
错误是指该int c;行.
经过一些实验,我发现了以下内容:
int c;行,它编译得很好.a();行,它编译得很好.int c;线移到a();线上方,它编译得很好..cpp而不是.c)的文件,它编译得很好.为什么会发生这种奇怪的错误?
我唯一的猜测是这是C的古老特征之一,其中所有变量都必须在函数的顶部声明.但我会认为现代编译器比这更聪明.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |