编译器不支持#pragma一次

时间:2015-04-20 17:26:54

标签: thrust pragma include-guards pgi

我有一个不支持的编译器(PGI)

#pragma once

但我希望包含的库(推力)使用它们。

此问题是否有解决方法?

2 个答案:

答案 0 :(得分:2)

您可以使用guardonce#pragma once语句转换为标准#ifndef ...包含警卫。

以下对我有用:

cd /tmp
git clone https://github.com/thrust/thrust.git
git clone https://github.com/cgmb/guardonce.git
cd guardonce
git checkout v2.0.0
python -m guardonce.once2guard -r "/tmp/thrust/thrust/"

这会在每个推力头文件中创建包含警戒:

 git diff /tmp/thrust


--- a/thrust/adjacent_difference.h
+++ b/thrust/adjacent_difference.h
@@ -19,7 +19,8 @@
  *  \brief Compute difference between consecutive elements of a range
  */

-#pragma once
+#ifndef ADJACENT_DIFFERENCE_H
+#define ADJACENT_DIFFERENCE_H

. . .

答案 1 :(得分:1)

嗯,宏(因此#pragma)由预处理器处理(cpp,不要误用c ++扩展),所以理论上你可以尝试使用支持#pragma的预处理器,然后用你的构建生成的代码编译器。