标准头文件中的错误

bem*_*sed 5 c c++ syntax header

我目前收到以下错误:

c:\ program files\microsoft visual studio\vc98\include\iomanip(15):错误C2059:>语法错误:'namespace'

c:\ program files\microsoft visual studio\vc98\include\iomanip(15):错误C2334:>'{'之前的意外令牌 跳过明显的功能体

c:\ program files\microsoft visual studio\_vc98\include\_ math.h(36):错误C2059:语法>错误:'string'

c:\ program files\microsoft visual studio\vc98\include\math.h(36):错误C2334:意外>'{'之前的标记; 跳过明显的功能体

由于它们都在标准库头文件中,因此只读,我不知道如何解决它!

任何帮助都会很棒.

Edw*_*per 7

在C/C++中,预处理器在实际解析源代码之前运行,而#includes基本上只是将不同的文件拼接在一起.这样做的一个结果是C/C++非常满意{在一个文件中匹配}另一个(包含)文件.当然,没有人这样做(或者如果他们这样做,他们应该被拍摄),但因为C/C++预处理器是如此简单,所以在技术上允许.

这样做的一个结果是,您自己的某个文件中的语法错误最终可能看起来像某个其他文件中的语法错误.当我忘记;在课后定义之后,我经常会遇到这种情况.但不匹配的{}s可以(如你所发现的那样)具有相同的效果.

因此,如果您在某些包含文件中看到错误,您认为可能不应该存在(例如标准库),那么首先要查看的是该文件之前包含的任何文件.有时重新排列#include语句也有助于缩小错误的来源.