【发布时间】:2023-04-07 14:37:01
【问题描述】:
我的代码使用 OpenMP,我使用 g++ 构建它,如下所示:
g++ -std=c++17 -O3 -fopenmp main.cpp -o helloworld
现在,出于调试和测试目的,我有时想在没有 OpenMP 的情况下使用类似的东西构建代码:
g++ -std=c++17 -O3 main.cpp -o helloworld
由于未链接 OpenMP 函数(未使用-fopenmp),因此无法构建代码。所以我的想法是使用一些预处理器魔法,比如:
#ifdef OPENMP
// run OpenMP-specific code
#else
// run this code only if -fopenmp was not set
#endif
这可能吗?问题可能是-fopenmp 仅用于链接 OpenMP 库,因此在构建的预处理器阶段可能不知道/不使用。
【问题讨论】:
-
g++ -DOPENMP -fopenmp? -
hmmm 这很简单,肯定会工作 :) 我现在会使用它,但如果可以避免这种冗余,仍然很有趣。我只是担心我很容易忘记并使用
-fopenmp而没有-DOPENMP:) -
另外,如果我忘记添加
-DOPENMP,在构建过程中不会出错(预处理器只会跳转到#else部分)
标签: c++ g++ c-preprocessor openmp