文法の観点から、C ++関数で「揮発性」キーワードはいくつ使用されていますか? 関数での揮発性キーワードの使用についてですが、その質問のケース1が何をしたかについての明確な説明はありませんでした. 回答者の 1 人による、無意味/役に立たないように思われたという声明のみ。
しかし、GNUC 用の AES ソフトウェア実装は文字通り何年も使用されており、次のような多くの機能を備えているため、その声明を完全に受け入れることはできません。
INLINE volatile void functionname( /* ... */ ) {
/* ... */
asm( /* ... */ ) // embedded assembly statements
/* ... */
}
その使用には理由があったに違いありません。誰でもできます:
A. _ 元の理由を教えてください。と
B. _ 今すぐ望ましい効果を達成する方法は?
Ubuntu と GCC 4.6.3 を使用しています。
注: 私が説明に最も近いのは、GCC 2.5より前では、次の方法で2.5で実装された「noreturn」属性を偽装できるということです。
void fatal( /* ... */ ) { /* ... */ exit(1); }
typedef void voidfn ();
volatile voidfn fatal;
これにより、コンパイラは「致命的」が返されないことを認識できます。
しかし、そのシナリオは AES コードには当てはまらないようです。久しぶりに組み立てましたが、ジャンプとかなら分かると思います。