我在C++项目中使用八度音程库.
#include <octave/oct.h>
Run Code Online (Sandbox Code Playgroud)
刚才我添加了一个标题any_iterator来自Thomas Becker的实现
#include "any_iterator.hpp"
Run Code Online (Sandbox Code Playgroud)
我刚刚添加了标题,无法构建项目.超过20个错误和超过50个警告出现.全部在八度标题中.例如:
/usr/include/octave/lo-mappers.h:52:
error: expected unqualified-id before ‘(’ token
Run Code Online (Sandbox Code Playgroud)
在代码中:
#if defined (HAVE_CMATH_ISNAN)
inline bool xisnan (double x)
{ return std::isnan (x); } // line 52
#else
Run Code Online (Sandbox Code Playgroud)
要么
/usr/include/octave/ov-base.h:580:
error: expected ‘)’ before ‘void’
Run Code Online (Sandbox Code Playgroud)
在声明中:
virtual octave_value isnan (void) const;
Run Code Online (Sandbox Code Playgroud)
一旦我删除标题,问题就消失了.同样在一个单独的项目中,any_iterator工作按预期进行.它只是看起来不能共存.
有任何想法吗?我完全迷失了.该any_iterator连被命名空间的保护.
小智 6
当然可以!为什么不?它可能是任何东西,真的.举个例子 - 在标题中打开一个命名空间然后忘记关闭它,然后在你的项目中包含这个标题就完成了.编译器会变成杜鹃,并开始向你指出错误,指向与错误无关的不同地方.