1

Ubuntuでコンパイラg++4.6を使用してC++共有ライブラリプロジェクトを作成しました。
一部の依存関係ライブラリは、コンパイラとオペレーティングシステムに関するいくつかのプリプロセッサコマンドが適切にコンパイルされることを期待しています。

#elif defined(__GNUC__) || defined(__llvm__) || defined(__clang__)

しかし、 Eclipseはそれらを自動的に定義しません(少なくとも私が使用しているバージョン)、Eclipseにこれを行う設定またはオプションはありますか?

4

1 に答える 1

2

プロジェクトのプロパティでプリプロセッサ定義を設定できますプロジェクトのプロパティ

ただし、あなたの場合、これらはプロジェクト固有であってはならないため、使用しません(コンパイラ固有であるため)。私は実際にあなたがこれらを探していると思います。llvm / clangについてはよくわかりませんが(ありますが、今は覚えていません)、GCCの場合は__GNUC__、コンパイラー自体によって定義されるマクロを使用する必要があります。心配する必要はありません。主要なアンダースコアは、標準の一部ではなく、別のコンパイラ(MSVCなど)を使用する場合に必ずしも定義されていないことを示しています。


クロスプラットフォームでの使用vsprintf_s

// this will be set on Visual Studio only, so this code is added for all other compilers
#ifndef _MSC_VER
#define vsprintf_s(b,l,f,v) vsprintf(b,f,v);
#endif

ただし、一般的には、すべてのプラットフォームで使用可能な関数を使用するようにしてください(この例では、vsnprintf()代わりに使用してください)。

于 2012-01-28T12:51:20.570 に答える