26
|
Emile Cormier · 技术社区 · 15 年前 |
![]() |
1
20
它是不安全的,每一个C++标准。如中所述 this SO posting :
根据 Martin York 在这个答案中,在某些平台上尝试这样做存在现实问题。
进行你的C ABI回调
编辑:从标准中添加一些支持性引用(emphasis mine): 3.5“程序和链接”:
及
|
![]() |
2
6
在搜索和解决其他问题时,我找到了一个清晰简洁的答案(无论如何,对于standardese):
Comeau
这不是未定义的行为,它显示了如何在函数指针类型(通过typedef)中包含语言链接:
|
![]() |
3
5
对于所有我知道的Windows C++编译器,答案是肯定的,但是语言标准中没有任何东西保证这一点。但是,我不会让你停止,这是一种非常普遍的使用C++实现回调的方法,但是你可能需要声明静态函数WiAPI。这是从我自己的旧线程库中获取的:
其中,这是te Windows线程API使用的回调。 |
![]() |
4
3
ABI不被C或C++标准覆盖,即使C++确实通过“语言链接”来实现。
据我所知,ISO的规则不允许一个标准超过每10年一次(但可以有各种出版物,如TC1和TR1 for C++)。此外,还有一个想法(我不确定这是否来自ISO,是否是从C委员会,甚至是从其他地方继承过来的)是“提炼/标准化现有实践,而不是进入左边的领域,还有 许多的 现有做法,其中一些做法相互冲突。 |
![]() |
sid_com · 为条件OO模块加载编写包装器模块的正确方法是什么? 11 年前 |
![]() |
tssch · 获取用户名的可移植方式 11 年前 |
![]() |
Prof. Falken · 如何编写(可移植的)反向网络字节顺序? 12 年前 |