boost / lexical_cast на fedora 20

Я пытаюсь скомпилировать и запустить программу на 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

В то время как в другом компьютере с ОС Ubuntu 10.04 и Boost 1.40 этот код работает отлично.

Есть идеи о том, что происходит?

Спасибо

1

Решение

Ваше сообщение не имеет отношения к повышению.

Вы не можете передать строковый литерал как char*, Это всегда const, так что передайте это как char const*: Жить на Колиру

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


ОБНОВИТЬ Ах.

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

std::endl

где-то, и препроцессор превращает это в

std::"\n"

который не является допустимым C ++.

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

0

Другие решения


По вопросам рекламы [email protected]