0

我想-DMY_FLAG=ONETWOTHREE在 CMake 调用中包含一个标志,即 ie ,并在 fortran 代码中make .. -DMY_FLAG=ONETWOTHREE获取 的值。MY_FLAGadd_definitions("-DMY_FLAG=${MY_FLAG}")用来传递MY_FLAGmake.

目前,当我做类似的事情时
write(*,*) MY_FLAG

我得到这个编译器错误:
Error: Symbol 'ONETWOTHREE' at (1) has no IMPLICIT type

可以将-D标志转换为 fortran 中的类型吗?它看起来像是MY_FLAG在编译时以某种方式定义的,但它没有类型。

4

1 回答 1

2

使用预处理器时,最终的源文件必须是有效的 Fortran。在目前的情况下,

write(*,*) ONETWOTHREE

无效,因为没有名为 的变量ONETWOTHREE

解决方案:

  1. 之前定义变量:

    integer ONETWOTHREE
    ONETWOTHREE = 5
    
  2. 不要使用ONETWOTHREE实际值。整数示例:

    -DMY_FLAG=123
    

    这样对应的行将是

    write(*,*) 123
    

当然,如果您能在此处向我们提供使用预处理器的意图,那将会很有用。

于 2017-08-12T13:47:39.287 回答