当我同时使用 nr3.h 和 boost 库时,我得到了一堆错误。
我使用带有 libboost1.40 的 ubuntu 10.04 和来自http://www.nr.com/的代码(第 3 版)
尝试.cc:
#include "nr3.h"
#include <boost/algorithm/string/predicate.hpp>
int main(void) {
return 0;
}
我编译了代码“g++ try.cc”,我得到了错误。如果我注释掉 nr3.h 行或 < boost ... > 行,代码编译得很好。
以下是错误:
In file included from /usr/include/boost/assert.hpp:36,
from /usr/include/boost/range/iterator_range.hpp:31,
from /usr/include/boost/range/as_literal.hpp:22,
from /usr/include/boost/algorithm/string/predicate.hpp:19,
from boostnrexample.cc:2:
/usr/include/assert.h: In function ‘void __assert_fail(const char*, const char*, unsigned int, const char*)’:
/usr/include/assert.h:73: error: expected primary-expression before ‘,’ token
/usr/include/assert.h: At global scope:
/usr/include/assert.h:73: error: declaration does not declare anything
/usr/include/assert.h: In function ‘void __assert_perror_fail(int, const char*, unsigned int, const char*)’:
/usr/include/assert.h:79: error: expected primary-expression before ‘,’ token
/usr/include/assert.h: At global scope:
/usr/include/assert.h:79: error: declaration does not declare anything
/usr/include/assert.h: In function ‘void __assert(const char*, const char*, int)’:
/usr/include/assert.h:85: error: expected primary-expression before ‘,’ token
/usr/include/assert.h: At global scope:
/usr/include/assert.h:85: error: declaration does not declare anything
In file included from /usr/include/c++/4.4/x86_64-linux-gnu/bits/messages_members.h:37,
from /usr/include/c++/4.4/bits/locale_facets_nonio.h:1905,
from /usr/include/c++/4.4/locale:43,
from /usr/include/boost/algorithm/string/compare.hpp:15,
from /usr/include/boost/algorithm/string/predicate.hpp:22,
from boostnrexample.cc:2:
/usr/include/libintl.h: In function ‘char* gettext(const char*)’:
/usr/include/libintl.h:41: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:41: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* dgettext(const char*, const char*)’:
/usr/include/libintl.h:46: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:46: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* __dgettext(const char*, const char*)’:
/usr/include/libintl.h:48: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:48: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* dcgettext(const char*, const char*, int)’:
/usr/include/libintl.h:54: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:54: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* __dcgettext(const char*, const char*, int)’:
/usr/include/libintl.h:57: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:57: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* ngettext(const char*, const char*, long unsigned int)’:
/usr/include/libintl.h:64: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:64: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* dngettext(const char*, const char*, const char*, long unsigned int)’:
/usr/include/libintl.h:70: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:70: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* dcngettext(const char*, const char*, const char*, long unsigned int, int)’:
/usr/include/libintl.h:77: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: At global scope:
/usr/include/libintl.h:77: error: declaration does not declare anything
/usr/include/libintl.h: In function ‘char* textdomain(const char*)’:
/usr/include/libintl.h:83: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: In function ‘char* bindtextdomain(const char*, const char*)’:
/usr/include/libintl.h:88: error: expected primary-expression before ‘,’ token
/usr/include/libintl.h: In function ‘char* bind_textdomain_codeset(const char*, const char*)’:
/usr/include/libintl.h:93: error: expected primary-expression before ‘,’ token
更新:我还在 nr.com 论坛 (http://www.nr.com/forum/showthread.php?t=2148) 上发布了它。并得到回应,问题是 nr3.h 为 throw() 定义了宏。我仍然不确定什么可能是一个强大的解决方案。