Fortran Coder

查看: 11124|回复: 2
打印 上一主题 下一主题

[编译器] !DEC$ 想问下以这个开头的语句是什么意思,十分感谢啊

[复制链接]

8

帖子

2

主题

0

精华

入门

F 币
40 元
贡献
15 点
QQ
跳转到指定楼层
楼主
发表于 2018-12-11 16:23:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
!DEC$ FREEFORM
!/*********************  Prototypes  ***********************/
interface
integer*4 function MainWndProc ( hwnd, mesg, wParam, lParam )
!DEC$ IF DEFINED(_X86_)
!DEC$ ATTRIBUTES STDCALL, ALIAS : '_MainWndProc@16' :: MainWndProc
!DEC$ ELSE
!DEC$ ATTRIBUTES STDCALL, ALIAS : 'MainWndProc' :: MainWndProc
!DEC$ ENDIF
integer*4 hwnd
integer*4 mesg  
integer*4 wParam
integer*4 lParam
end function
end interface


我的认知中这个!开头的语句应该是注释啊


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩
Why so serious?

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2018-12-11 18:26:39 | 只看该作者
这种叫做 “Compiler Directives”(编译指导)
用来告知编译器一些“语法之外的事情”

是不规范的用法。所以借用注释来实现,这样,当用别的编译器编译时,会当成注释处理。(而不至于报错)

它的具体用法你可以看编译器的说明书。

!DEC$ IF DEFINED(_X86_)    如果定义了 X86 宏
!DEC$ ATTRIBUTES STDCALL, ALIAS : '_MainWndProc@16' :: MainWndProc  告知编译器,MainWndProc 函数采用 stdcall 调用协定,符号名为 _MainWndProc@16
!DEC$ ELSE  否则
!DEC$ ATTRIBUTES STDCALL, ALIAS : 'MainWndProc' :: MainWndProc   与上文类似
!DEC$ ENDIF

这些用法是为了保证编译出来的二进制接口,与 Windows API 保持一致。这样,Windows上的运行时库(是C语言写的,且采用 stdcall 调用协定)可以正确识别。

评分

参与人数 1F 币 +10 贡献 +10 收起 理由
warriorVIP + 10 + 10 很给力!

查看全部评分

8

帖子

2

主题

0

精华

入门

F 币
40 元
贡献
15 点
QQ
板凳
 楼主| 发表于 2018-12-11 18:35:13 | 只看该作者
fcode 发表于 2018-12-11 18:26
这种叫做 “Compiler Directives”(编译指导)
用来告知编译器一些“语法之外的事情”

好嘞,多谢了
Why so serious?
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 13:47

Powered by Tencent X3.4

© 2013-2024 Tencent

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