有条件的“#pragma omp critical {"

时间:2014-06-10 15:11:18

标签: c++ c gcc openmp c-preprocessor

所以我想做这样的事情

#ifdef MYCOND
#define CR_BEGIN #pragma omp critical{
#define CR_END }
#else
#define CR_BEGIN 
#define CR_END 
#endif
由于标签,GCC(4.8.2)不喜欢第2行。 SO的相关问题给出答案"使用_Pragma("")"但在这种情况下它不起作用。

建议?

1 个答案:

答案 0 :(得分:5)

你可以这样做:

start_critical.h:

#ifdef MYCOND
#pragma omp critical{
#endif

end_critical.h

#ifdef MYCOND
}
#endif

然后像这样使用它:

#include "start_critical.h"
//sometimes critical code here
#include "end_critical.h"

由于start_critical.hend_critical.h中没有标题保护,您可以在任何文件中多次使用它们。