我有一个不支持的编译器(PGI)
#pragma once
但我希望包含的库(推力)使用它们。
此问题是否有解决方法?
答案 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的预处理器,然后用你的构建生成的代码编译器。