1
-frtti
でコンパイルすると、翻訳単位全体または一部のクラスに対してtypeinfoが生成されないようにする方法はありますか?GCC C++ override -frtti for single class
おそらく、コマンドラインオプションを無効にできる魔法の#pragma
または__attribute__
がありますか?
ありがとうございます。
-frtti
でコンパイルすると、翻訳単位全体または一部のクラスに対してtypeinfoが生成されないようにする方法はありますか?GCC C++ override -frtti for single class
おそらく、コマンドラインオプションを無効にできる魔法の#pragma
または__attribute__
がありますか?
ありがとうございます。
私にとっては魔法はないと思われます。さらに、そのような魔法のどんな種類も破壊的であると私には思われます。
コンパイルオプションを内部コードから微調整できる唯一の魔法のGCCプラグマはpragma GCC optimize
です。
オプティマイザ自体は機能ごとに動作し、あなたが簡単にそれがタイプについてRTTI生成に影響を与えないことを、見ることができるので、このプラグマは、機能単位で動作します:GCC 5.2で
#include <iostream>
#include <typeinfo>
struct X
{
virtual int foo() {return 0;}
};
#pragma GCC optimize ("no-rtti")
struct Y
{
virtual int foo() {return 0;}
};
#pragma GCC reset_options
int
main()
{
std::cout << "X: " << sizeof (X) << " " << typeid(X).name() << std::endl;
std::cout << "Y: " << sizeof (Y) << " " << typeid(Y).name() << std::endl;
return 0;
}
、出力は次のとおりです。
X: 8 1X
Y: 8 1Y