2015-02-06 4 views
1

I'am пытается скомпилировать и запустить программу на C++, где включен boost/lexical_cast.hpp в Fedora 20, в котором установлен boost-devel 1.50повышение/lexical_cast на Fedora 20

Что я получаю следующим образом:

[email protected] 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 эти коды работают отлично.

Любая идея о том, что происходит?

Спасибо

+0

Это любопытно определить: '#define Endl "\ п"' Тем более, что есть 'станд :: епсИ '. – Deduplicator

ответ

0

Ваше сообщение не имеет никакого отношения к росту.

Вы не можете передать строковый литерал как char*. Это всегда сопзЬ, поэтому передать его как char const*: Live On Coliru

Что касается других ошибок в mdp.h, вам необходимо показать соответствующий код


UPDATE Ач.

Проблема с определением. Он разбивает компиляцию заголовка boost, потому что mdp.h пишет;

std::endl 

где-то, и препроцессор делает, что в

std::"\n" 

который не действует C++.

Удалить определение. Используйте using вместо (но не в заголовочных файлах):

+0

Идея состоит в том, что тот же код отлично работает в другой системе с libboost-all-dev 1.40. Я уверен, что проблема не в mdp.h. Я уже тестировал код – Ina

+0

Дело в том, что новые компиляторы добавили предупреждение, которое я объяснил (так что есть больше различий). Кроме того, согласны ли вы, что он не компилируется? Если вы хотите, чтобы мы помогли его исправить, вы должны показать соответствующий код. Не имеет значения, что он компилируется в другой системе. (Если вы не хотите использовать другую систему) – sehe

+0

AH. @ Комментарий Deduplicator объяснил вещи, обновил мой ответ – sehe