标准头文件中的错误
Errors within standard header files
我目前收到以下错误:
C:\Program Files\Microsoft Visual Studio\VC98\include\iomanip(15):错误 C2059:>语法错误:"命名空间"
C:\Program Files\Microsoft Visual Studio\VC98\include\iomanip(15):错误 C2334:>'{'前面出现意外标记;跳过表观函数体
C:\Program Files\Microsoft Visual Studio\VC98\include\math.h(36):错误 C2059:语法>错误:"字符串"
C:\Program Files\Microsoft Visual Studio\VC98\include\math.h(36):错误 C2334:意外的>"{"前面的令牌;跳过明显的函数体
由于它们都在标准库头文件中,因此是只读的,我不知道如何解决它!
任何帮助都会很棒。
在 C/C++ 中,预处理器在实际解析源代码之前运行,#include
基本上只是将不同的文件拼接在一起。 这样做的一个结果是,C/C++ 非常满意一个文件中的{
与另一个(包含)文件中的}
匹配。 当然,没有人这样做过(或者如果他们这样做,他们应该被枪杀),但由于 C/C++ 预处理器非常简单,因此在技术上是允许的。
这样做的一个后果是,您自己的一个文件中的语法错误最终可能看起来像其他文件中的语法错误。 当我忘记在类定义后放置;
时,我自己经常遇到这种情况。 但是不匹配的{}
可以(正如你发现的)具有相同的效果。
因此,如果您在某个包含的文件中看到您认为可能不应该存在的错误(例如标准库),那么首先要查看的是该文件之前包含的任何文件。 有时重新排列#include
语句也有助于缩小错误来源的范围。
Visual Studio:
- 打开项目的"属性页"对话框。
- 单击 C/C++ 文件夹。
- 单击"高级"属性页。
- 显示包括(是)
项目,在生成输出中应看到包含树。找到错误的第一个出现,然后向上扫描打开每个包含文件(您编写的文件),以查找哪个文件缺少大括号"}"
我遇到了这个错误,但发现问题是我正在定义的方法的名称已经在 window.h 中定义为宏,所以我不得不 #undef 它。
我在学生代码中遇到了"跳过明显的函数体"错误,很难追踪,因为我预计这是一个大括号不匹配。
我的学生有一个成员变量和一个用相同名称声明的成员函数。 函数位于变量之后,因此函数体上的解析失败。 这最类似于洞中引用预定义宏的答案中的火。
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 如何在文件和行号中抛出错误
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- AMQP-CPP >处理程序中的错误文件描述符
- Xcode OSX上的C++构建失败,出现多个错误文件IO..不可用:在macOS 10.15中引入
- 为什么生成文件返回 g++: 错误: h 文件或目录 make: *** [生成文件:12: 测试] 错误 1?
- 警告:打开错误文件(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- main.cc:5:30:致命错误:文件夹/file.h:没有这样的文件或目录
- C++ LNK2005"已定义"错误 - 文件引用自身
- C++:模拟餐饮公司计费程序-无法将错误数据输出到错误文件
- 博兰德C++链接器错误c文件包括
- Visual Studio 2015 代码覆盖率错误文件
- 使用system()与Gnuplot进行绘图会导致错误:文件不可读
- 是否存在fseek/ftell可能给出错误文件大小的情况
- g++编译错误.h文件
- c++编译错误:.o文件未找到
- 打开错误文件的错误消息
- Ndk-build输出添加符号错误.文件格式错误