奇怪的 Visual Studio 2008 C++ 编译器错误
Posted
技术标签:
【中文标题】奇怪的 Visual Studio 2008 C++ 编译器错误【英文标题】:Strange visual studio 2008 C++ compiler error 【发布时间】:2011-03-22 05:38:27 【问题描述】:我有三行代码:
//int pi;
activation->structSize = sizeof(rmsActivationT);
int pi; //program wont compile with this here
每次我取消注释第二个 int pi 并注释第一个 int pi 时,我都会收到此错误:语法错误:缺少 ';'在“类型”之前。当我取消注释第一个 int pi 并注释第二个 int pi 时,我的编译器不再抱怨。这个错误困扰了我将近一整天,现在任何想法都会很棒。
谢谢
视觉工作室 2008 Windows XP 32 位
【问题讨论】:
也许你应该展示更多... 您能否显示一些上下文,并准确指出错误消息指向哪一行?现在,我只会疯狂地猜测。 你能帮我一个忙,在每个之间添加一个空行并尝试你的各种评论/取消注释/编译选项吗? 我已经在 VS 2005 中看到过这样的魔法。大约一年两次...清理解决方案,重新启动计算机...有时它可以工作;有时我会留下交换的线条。 @David,编译器指向底线。我检查了激活结构是否缺少';'到目前为止还没有找到。 【参考方案1】:我遇到了同样的问题。
编译错误是:
*main.cpp(325): error C2601: 'FLAG' : 局部函数定义是非法的
main.cpp(323):此行包含一个尚未匹配的''
main.cpp(326): 致命错误 C1075: 在匹配 'main.cpp(323)' 的左大括号 '' 之前找到文件结尾*
但我的代码没有任何问题。我数了数所有括号和匹配的数字。另一个函数中没有任何函数。
我通过从源代码中删除所有“//”cmets 解决了这个问题。原因似乎是错误的行格式导致编译器错过换行符,因此注释后的行也被视为注释。
例如:
// This is a comment
This_is_a_line;
被视为:
// This is a comment This_is_a_line;
【讨论】:
【参考方案2】:您是否将代码编译为 C 而不是 C++? C(在 C99 之前,Visual Studio 不支持)要求块中的所有定义都在任何其他语句之前。
【讨论】:
你打败了我。这几乎肯定是问题所在,因为这正是将导致的错误。如果文件是 .cc/.cpp 文件,请检查项目属性中的“C++/Advanced/Compile As”设置。如果您的文件是“.C”文件,请记住 Windows 不区分大小写,您需要重命名源文件或使用上述设置强制 C++ 编译。以上是关于奇怪的 Visual Studio 2008 C++ 编译器错误的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio / VB.Net 2008 IntelliSense 奇怪行为
Visual Studio 2008中字符串头文件不是cstring是string?