gnu预处理器和clang预处理器中的不同行为

时间:2014-12-08 19:40:36

标签: fortran preprocessor c-preprocessor

我有一个简单的FORTRAN代码

#define  DTYPE(a) a/**/_s
TYPE,EXTENDS(DTYPE(type1)) :: DTYPE(type2)
CLASS(DTYPE(type1)_), POINTER :: x => NULL()
CONTAINS
PROCEDURE :: comp => DTYPE(comp1)
END TYPE DTYPE(type2)
#undef DTYPE

使用GNU预处理器我会得到我期望的正确行为,而使用CLANG预处理器时它会表现得很奇怪。

使用cpp-4.9(GNU)

cpp-4.9 -traditional-cpp -P test.f

TYPE,EXTENDS(type1_s) :: type2_s
CLASS(type1_s_), POINTER :: x => NULL()
CONTAINS
PROCEDURE :: comp => comp1_s
END TYPE type2_s

使用cpp(CLANG)

cpp -traditional-cpp -P test.f

TYPE,EXTENDS(type1 _s) :: type2 _s
CLASS(type1 _s _), POINTER :: x => NULL()
CONTAINS
PROCEDURE :: comp => comp1 _s
END TYPE type2 _s

使用cpp(CLANG)有一个额外的空间会导致编译器错误。有谁知道这是什么问题?

0 个答案:

没有答案