gpt4 book ai didi

c++ - 如何为编译指示创建包装器并使其正确编译?

转载 作者:太空狗 更新时间:2023-10-29 21:38:34 29 4
gpt4 key购买 nike

我一直在尝试围绕 MPI 和 OpenMP 构建一个包装器,以使用统一格式进行编码,而不必一直在 MPI_xxx、omp_xxx 和 #pragma omp xxx 之间切换。

我一直在围绕各种#pragma omp 指令创建包装器时遇到问题,到目前为止,我得到的最好的方法是将其作为:

#define _mmc_(x) _Pragma("omp ## #x")

(mmc是我图书馆的暂定名)

如果我想拥有

#pragma omp parallel for

对应的wrapper应该是

_mmc_(parallel for)

但是当它编译时,编译器似乎以不同的方式评估它,给我编译警告

test.cpp:22:0: warning: ignoring #pragma omp  [-Wunknown-pragmas]
_mmc_(parallel for)

我正在 Ubuntu 14.04 中围绕 gcc 4.8.4 使用 mpic++ 为 MPICH 3.0.4 编译,带有标志

-fopenmp -lm -std=c++11 -Wall

是否有什么我可以做或添加到代码中以使其工作,或者这只是当前工具无法完成的事情?

最佳答案

这应该有效,as seen here :

#define PRAGMA(x) _Pragma(#x)
#define _mmc_(x) PRAGMA(omp x)

_Pragma 在获取字符串文字方面有点严格,因此我们从整个 pragma 参数字符串中生成该文字,而不是在 _Pragma 中将其拼凑在一起。正如您在帖子中尝试的那样,预处理器运算符不会在字符串文字中工作。

关于c++ - 如何为编译指示创建包装器并使其正确编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055571/

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