gpt4 book ai didi

c - —"volatile void function( ... )"是做什么的?

转载 作者:太空狗 更新时间:2023-10-29 16:26:59 26 4
gpt4 key购买 nike

我看过 How many usage does "volatile" keyword have in C++ function, from grammar perspective?关于在函数上使用 volatile 关键字,但没有明确解释该问题中案例 1 的作用。只有一位受访者表示这似乎毫无意义/无用。

但是我不能完全接受这个说法,因为 GNUC 的 AES 软件实现已经使用了很多年,并且它们有很多这样的功能:

INLINE volatile void functionname( /* ... */ ) {
/* ... */
asm( /* ... */ ) // embedded assembly statements
/* ... */
}

这种用法一定是有原因的。任何人都可以:

一个。告诉我最初的原因是什么;和

B。现在如何达到预期的效果?

我正在使用 Ubuntu 和 GCC 4.6.3。


注意:我最接近的解释是在 GCC 2.5 之前,您可以通过以下方式欺骗在 2.5 中实现的“noreturn”属性:

void fatal( /* ... */ ) { /* ... */ exit(1); }

typedef void voidfn ();

volatile voidfn fatal;

这将允许编译器识别“fatal”不会返回。

但这种情况似乎不适用于 AES 代码。我已经有很长时间没有在装配中做过任何事情了,但我想我会认出跳跃或类似的事情。

最佳答案

根据gcc documentation (until February 2015) , volatile void 在 C 中作为函数返回值(但在 C++ 中不是)等同于函数上的 __attribute__((noreturn)) 并告诉编译器函数永远不会返回。

关于c - —"volatile void function( ... )"是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14288603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com