有幾個回圈我想指示編譯器使用下面的代碼展開。它很長,我寧愿不復制粘貼。
#define 陳述句可以定義前處理器宏嗎?
我試過這個:
#define foo \
#ifdef __GNUC__ \
#if __GNUC__ >= 8 \
#pragma GCC unroll 128 \
#pragma GCC ivdep \
#endif \
#endif \
#ifdef __clang__ \
#pragma clang loop vectorize(enable) interleave(enable) \
#endif
但是當我foo在代碼中使用時cpp顯示它無效地擴展為:
#ifdef 4 #if 4 >= 8 #pragma GCC unroll 128 #pragma GCC ivdep #endif #endif #ifdef __clang__ #pragma clang loop vectorize(enable) interleave(enable) #endif
#ifdef 4 #if 4 >= 8 #pragma GCC unroll 128 #pragma GCC ivdep #endif #endif #ifdef __clang__ #pragma clang loop vectorize(enable) interleave(enable) #endif
uj5u.com熱心網友回復:
您不能以您在問題中顯示的方式定義預處理指令。
然而,您也許可以將_Pragma運算子用于您的目的:
#if defined __GNUC__ && __GNUC__ >= 8
#define foo _Pragma("GCC unroll 128") _Pragma("GCC ivdep")
#elif defined __clang__
#define foo _Pragma("clang loop vectorize(enable) interleave(enable)")
#else
#define foo
#endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/419658.html
標籤:
下一篇:修復分段錯誤
