How to fix C++ boost/array.hpp:118:61: error: expected primary-expression before ‘,’ token
English
Deutsch
In einem Legacy-C++-Projekt, das Boost ProgramOptions verwendet. Der Versuch, es zu kompilieren, wird diese Fehlermeldung erzeugen:
boost_array_error_output.txt
In file included from /usr/include/boost/lexical_cast/detail/converter_lexical.hpp:50:0,
from /usr/include/boost/lexical_cast/try_lexical_convert.hpp:42,
from /usr/include/boost/lexical_cast.hpp:32,
from /usr/include/boost/program_options/value_semantic.hpp:14,
from /usr/include/boost/program_options/options_description.hpp:13,
from /usr/include/boost/program_options.hpp:15,
from /home/uli/dev/myproject/datasplit.cpp:15:
/usr/include/boost/array.hpp: In member function ‘T& boost::array<T, N>::operator[](boost::array<T, N>::size_type)’:
/usr/include/boost/array.hpp:118:61: error: expected primary-expression before ‘,’ token
return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];Ich habe keinen zufriedenstellenden Weg gefunden, dieses Problem zu beheben, aber es kann umgangen werden, indem das Problem in der Quelldatei behoben wird:
Öffne zuerst /usr/include/boost/array.hpp in deinem Lieblingseditor als root (sudo!). Ich verwende nano.
Dann gehe zu Zeile 118, die lautet:
boost_array_broken.cpp
return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];Ersetze diese Zeile durch
boost_array_fix1.cpp
BOOST_ASSERT_MSG( i < N, "out of range" );
return elems[i];Außerdem findest du 4 Zeilen unter dem, was wir gerade bearbeitet haben, eine weitere Instanz von
boost_array_broken2.cpp
return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];Ersetze diese ebenfalls durch
boost_array_fix2.cpp
BOOST_ASSERT_MSG( i < N, "out of range" );
return elems[i];Nun speichere die Datei und schließe deinen Editor. Dein Code sollte nun kompilieren.
Check out similar posts by category:
C/C++, GCC Errors
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow