Fortran Coder

查看: 24394|回复: 12
打印 上一主题 下一主题

[编译器] IVF如何编译通过预处理宏

[复制链接]

9

帖子

2

主题

0

精华

入门

F 币
84 元
贡献
37 点

规矩勋章

跳转到指定楼层
楼主
发表于 2015-3-16 11:05:22 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
编译Fortran程序,其中的一段
[Fortran] 纯文本查看 复制代码
#ifdef COUPLING            
            if (modele2d==1) then
#endif
                call is_in_cell(x,y,kvol,in_cell)
#ifdef COUPLING
            else
                call is_in_cell_1d(x,y,kvol,in_cell)
            endif
#endif

编译不通过:1>src\prepare_obs.f90(131): warning #5117: Bad # preprocessor line
1>src\prepare_obs.f90(133): warning #5117: Bad # preprocessor line
1>src\prepare_obs.f90(135): warning #5117: Bad # preprocessor line
1>src\prepare_obs.f90(139): warning #5117: Bad # preprocessor line
所选平台是VS2012+IVF2013,请问有什么办法可以解决?

捕获.JPG (77.97 KB, 下载次数: 436)

捕获.JPG
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

9

帖子

2

主题

0

精华

入门

F 币
84 元
贡献
37 点

规矩勋章

沙发
 楼主| 发表于 2015-3-16 14:09:09 | 显示全部楼层
vvt 发表于 2015-3-16 11:29
Fortran 语法里没有关于预处理宏的指令,所以都是各家编译器扩展的。

ivf 这样用:

灰常感谢vvt!!!

9

帖子

2

主题

0

精华

入门

F 币
84 元
贡献
37 点

规矩勋章

板凳
 楼主| 发表于 2015-3-17 09:05:56 | 显示全部楼层
fcode 发表于 2015-3-16 14:17
define 和 undefine 也不一样,分别是
[mw_shl_code=fortran,true]!DEC$ DEFINE COUPLING
!DEC$ UNDEFINE  ...

受教了,灰常感谢fcode君!!!

9

帖子

2

主题

0

精华

入门

F 币
84 元
贡献
37 点

规矩勋章

地板
 楼主| 发表于 2015-3-17 09:43:24 | 显示全部楼层
zhu_youren 发表于 2015-3-17 09:05
受教了,灰常感谢fcode君!!!

那简单的总结一下IVF中预处理宏的用法(与C对应)就是
[Fortran] 纯文本查看 复制代码
#ifdef COUPLING → !DEC$ IF DEFINED ( COUPLING ) ,
#endif → !DEC$ endif,
#else → !DEC$ else ,
#define COUPLING →  !DEC$ DEFINE COUPLING   
#undef  COUPLING →  !DEC$ UNDEFINE COUPLING 

评分

参与人数 1F 币 +9 贡献 +4 收起 理由
fcode + 9 + 4 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-15 18:05

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表