奇怪的 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 奇怪行为

C++ 奇怪行为 Visual Studio

Visual Studio 2008中字符串头文件不是cstring是string?

Visual Studio 2010 显示旧的 Visual Studio 2008“添加引用”对话框

visual studio 2008如何引用dll

Visual Studio 2008 调试器随机死机