1

我正在尝试编译和运行一个 C++ 程序,该程序包含boost/lexical_cast.hpp在 fedora 20 中,安装在哪里boost-devel 1.50

我得到如下:

ina@localhost Examples]$ g++ -I ../Libraries/ quark_prop.cpp
In file included from ../Libraries/mdp.h:177:0,
                 from ../Libraries/fermiqcd.h:15,
                 from quark_prop.cpp:1:
../Libraries/mdp_utils.h:73:51: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
 int is_file(string filename, char permission[]="r") {
                                                   ^
In file included from ../Libraries/fermiqcd.h:15:0,
                 from quark_prop.cpp:1:
/usr/include/boost/assert.hpp: In function ‘void boost::assertion::detail::assertion_failed_msg(const char*, const char*, const char*, const char*, long int)’:
../Libraries/mdp.h:49:14: error: expected unqualified-id before string constant
 #define endl "\n"
              ^
../Libraries/mdp.h:49:14: error: expected ‘;’ before string constant

而在另一台装有 OS ubuntu 10.04 和 boost 1.40 的电脑上,这个代码可以完美运行。

知道发生了什么吗?

谢谢

4

1 回答 1

0

您的消息与提升无关。

您不能将字符串文字作为char*. 它始终是 const,所以将其传递为char const*Live On Coliru

关于 中的其他错误mdp.h,您需要显示相关代码


更新啊。

问题在于定义。由于 mdp.h 写入,它破坏了 boost 标头的编译;

std::endl

某处,预处理器正在把它变成

std::"\n"

这不是有效的 C++。

删除定义。改为使用using(但不在头文件中):

于 2015-02-06T12:21:46.303 回答