実際には#pragma optimize
ステートメントを使用しているか、__attribute__((optimize("-O3")))
を使用しています。すべての最適化オプションはhereです。
簡単な例は次のようになります。あなたが別のコンパイラを使用している場合は
#include <stdio.h>
// Using attribute
__attribute__((optimize("-O3"))) void fast_function_attribute()
{
printf("Now calling a slow function, compiled with -O3 flags.\n");
}
__attribute__((optimize("-O1"))) void slow_function_attribute()
{
printf("Now calling a slow function, compiled with -O1 flags.\n");
}
// Using #pragma
#pragma GCC push_options
#pragma GCC optimize ("-O3")
void fast_function_pragma()
{
printf("This will be another fast routine.\n");
}
#pragma GCC pop_options
#pragma GCC push_options
#pragma GCC optimize ("-O1")
void slow_function_pragma()
{
printf("This will be another slow routine.\n");
}
#pragma GCC pop_options
int main(void)
{
fast_function_attribute();
slow_function_attribute();
fast_function_pragma();
slow_function_pragma();
}
、私は非常にマクロでそれらをラップ(または任意のコンパイラの警告を回避するために、プラグマ・ステートメントではなく、__attribute__
を使用することをお勧めします
これらの機能を別々のファイルに置き、別々のフラグを使用してそれらを構築します。これは簡単な解決策になります。 "テストを行うコードはたくさんの警告を出す" - すでにそれらを修正する - 待つか言い訳しない - コンパイラの警告を修正する(そして '-Werror'でビルドを開始する) –
[GCC - 特定の関数でのみコンパイラフラグを有効にする]の可能な複製(https://stackoverflow.com/questions/12925989/gcc-enable-compiler-flags-only-on-specific-functions) – Pyves