如何抑制涉及限制指令的 g++ 错误
How to suppress g++ errors involving restrict directive?
我的C++编译器无法理解restrict
指令。
如何抑制这些错误?
/usr/include/inttypes.h:271: error: expected ',' or '...' before 'nptr'
usr/include/inttypes.h
包含
extern intmax_t strtoimax(const char * restrict nptr, char ** restrict endptr, int base);
编译命令:
g++ -c -pipe -g -gdwarf-2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall
-W -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-DPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -o player.o ../dir/player.cpp
编辑:
$ g++ --version
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
G++ 不支持 restrict
关键字,该关键字在 C 中有效,但在 C++ 中无效。
它确实支持__restrict__
作为扩展,因此您可以使用-Drestrict=__restrict__
进行编译,以使用预处理器将其转换为接受的关键字。
有关详细信息,请参阅 http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html。
该问题似乎是由于您使用-DISOC99_SOURCE
引起的,该似乎与操作系统上的C++不兼容,因为它启用了在C++中无效的 C99 功能。 在GNU/Linux上,我建议改用-D_GNU_SOURCE
,但我怀疑这在Mac OS X上是否有效。
因此,与其-Drestrict=__restrict__
,不如停止使用-D_ISOC99_SOURCE
- 为什么你甚至需要它来C++?
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++:对不存在的命名空间使用命名空间指令
- 函数名是c中该函数的第一条指令的地址吗
- 错误:无效的预处理指令 #i 的意思是 #if?
- 组装指令中乘法的下部和上部是什么
- OpenMP 与有序和关键指令并行
- C++中的移动分配出现问题.非法指令: 4.
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- C++CMake编译指令与
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- AVX 指令中寄存器和指针之间的客观差异
- while 循环 c++ 中的非法指令
- 如何在编译时定义C++预处理器指令的值?
- 存储指令是否会阻止缓存未命中的后续指令?
- 保证编译器指令在C++中重新排序
- VS2008中的AVX-512指令库
- 令人困惑的定义指令在C ++项目中
- 是否有用于元素部分移位的 simd 指令/内在/内置指令?