所以我想做这样的事情
#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("")"但在这种情况下它不起作用。
建议?
答案 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.h
或end_critical.h
中没有标题保护,您可以在任何文件中多次使用它们。