奇怪的编译器行为 (C++)
Posted
技术标签:
【中文标题】奇怪的编译器行为 (C++)【英文标题】:Weird Compiler behavior (C++) 【发布时间】:2016-12-15 04:01:23 【问题描述】:我正在尝试将 GA 库 (GALib) 添加到我的无错误程序中,当我添加它时,编译器会返回奇怪的错误并重复它们很多次......例如,“语法错误:缺少' ' before '
template<class _Ty>
_Check_return_ inline _Ty _Pow_int(_Ty _Xx, int _Yx) _NOEXCEPT
unsigned int _Nx;
if (_Yx >= 0)
_Nx = static_cast<unsigned int>(_Yx);
else
_Nx = static_cast<unsigned int>(-_Yx);
for (_Ty _Zx = static_cast<_Ty>(1); ; _Xx *= _Xx)
if ((_Nx & 1) != 0)
_Zx *= _Xx;
if ((_Nx >>= 1) == 0)
return (_Yx < 0 ? static_cast<_Ty>(1) / _Zx : _Zx);
错误在 cmath.h 同一行的错误重复了 25 次左右。其他许多人也是如此。 (提到的错误是列表中的第一个错误) PS。我使用以下顺序添加了 GA 文件: 1-项目属性>C++>其他包含库>选择文件夹 2-将包含标题和源的文件夹拖放到项目解决方案管理器 聚苯乙烯。所有源文件的扩展名都是 .C 而不是 .cpp 我该如何解决这种情况?
【问题讨论】:
@Vality 这是标准库代码。 @Peet 它们应该是 C++ 还是 C 源文件?可能该库使用 .C(大写 C)表示 C++,但由于 Windows 不区分大小写,因此将 .C 与 .c 视为 C 相同。 @immibis 我在写这个问题的时候一直在思考这个问题,所以我回到了 GA 库的文档,发现:“设置开发环境以在 .C 文件上使用 C++ 编译器(这是 MS Visual C++ 中的 /TP 标志)。在 Visual C++ 中启用 RTTI。“虽然不知道该怎么做...仍在搜索 库使用 .c 作为 c++ 代码的扩展是非常愚蠢的。 @Peet 在源文件的属性中有一个选项。 【参考方案1】:此页面中的以下步骤:msdn.microsoft.com/en-us/library/032xwy55.aspx 大多数错误都消失了(包括提到的错误)。
主要问题是编译器使用默认选项处理 .C 文件,我在前面的页面中将其更改为 C++。
【讨论】:
以上是关于奇怪的编译器行为 (C++)的主要内容,如果未能解决你的问题,请参考以下文章