0
私は1つの厄介な問題を抱えており、すでに調査中です。C++エラー: 'インライン'は関数にしか表示されません
私はかなり古いC++ - ishコードのプロジェクトを持っています.C++ 11コードを追加する必要があります。問題は、これらの定義によって引き起こされる
set (CMAKE_CXX_STANDARD 11)
:
#define lt(a, b) ( ((a) < -b))
#define ge(a, b) (! ((a) < -b))
#define le(a, b) ( ((a) <= b))
#define gt(a, b) (! ((a) <= b))
#define eq(a, eps) ((((a) <= eps) && !((a) < -eps)))
#define ne(a, eps) (!eq(a,eps))
これは、それは私のCMakelist.txtに以下を追加する問題は、私が導入されたことは非常に特定ですので、このプロジェクトは、以前に、コンパイルされました私が得るエラー:
/Users/bs/util.h:284:22: note: expanded from macro 'eq'
#define eq(a, eps) ((((a) <= eps) && !((a) < -eps)))
^
In file included from /Users/bs/geom.cc:35:
In file included from /Users/bs/coord.h:30:
In file included from /Users/bs/vronivector.h:6:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:678:12: error: 'inline' can
only appear on functions
static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [src/CMakeFiles/vroni.dir/geom.cc.o] Error 1
make[1]: *** [src/CMakeFiles/vroni.dir/all] Error 2
make: *** [all] Error 2
ここで問題は何ですか?それは修正できますか?
['std :: char_traits :: eq'] //en.cppreference.com/w/cpp/string/char_traits/cmp)、マクロは常に間違っています – MSalters
なぜこれらのマクロを定義しているのですか?マクロはなぜですか? –
私が言ったように、私はレガシーコードに対処しなければならない。要するに:非常に複雑なコードだが、数学的観点からは十分にテストされたコード、ソフトウェアの観点からは非常に愚かなコード。私は実際には、レガシーコードが機能するように、プロジェクト全体を再度リベースしました。リファクタリングの試みは、頭痛の原因となりました。 – benjist