gpt4 book ai didi

c - 有没有办法定义包含预处理器指令的预处理器宏?

转载 作者:行者123 更新时间:2023-12-02 18:21:30 26 4
gpt4 key购买 nike

我想指示编译器使用如下代码展开一些循环。它很长,我不想复制粘贴。

#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

但是当我在代码 cpp 中使用 foo 时,显示它无效扩展为:

 #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

最佳答案

您无法按照问题中显示的方式定义预处理指令。

但是您可以使用 _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

关于c - 有没有办法定义包含预处理器指令的预处理器宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70819859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com