[英]boost/lexical_cast on fedora 20
我正在尝试编译并运行C ++程序,其中在fedora 20中安装了boost-devel 1.50
boost/lexical_cast.hpp
,在其中安装了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
在另一台装有ubuntu 10.04和boost 1.40操作系统的PC上,此代码可完美运行。
有什么想法吗?
谢谢
您的消息与提升无关。
您不能将字符串文字传递为char*
。 它始终是const,因此将其作为char const*
传递: Live On Coliru
关于mdp.h
的其他错误,您需要显示相关代码
更新啊。
问题出在定义上。 因为mdp.h写入,这破坏了boost头的编译;
std::endl
某个地方,预处理器将其变成
std::"\n"
这不是有效的C ++。
删除定义。 改用using
(但不要在头文件中):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.