[英]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.