簡體   English   中英

fedora 20上的boost / lexical_cast

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM