Я пытаюсь скомпилировать и запустить программу на 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 этот код работает отлично.
Есть идеи о том, что происходит?
Спасибо
Ваше сообщение не имеет отношения к повышению.
Вы не можете передать строковый литерал как char*
, Это всегда const, так что передайте это как char const*
: Жить на Колиру
Что касается другой ошибки в mdp.h
, вам нужно показать соответствующий код
ОБНОВИТЬ Ах.
Проблема с определением. Это нарушает компиляцию заголовка boost, потому что mdp.h пишет;
std::endl
где-то, и препроцессор превращает это в
std::"\n"
который не является допустимым C ++.
Удалить определение. использование using
вместо этого (но не в заголовочных файлах):