2
#define _FUID1(x) __attribute__((section("__FUID1.sec"),space(prog))) int _FUID1 = (x);

上記の定義について理解しようとしています。_FUID(x) マクロ。これはプログラムメモリに関連し、コードセクションメモリ領域で定義されているセクションの属性を持っていますか? 上記は何を達成しようとしていますか?

4

2 に答える 2

4

マクロは、興味深いことや複雑なことをまったく行っていません。の宣言を出力しint _FUID1、そのパラメーターを初期化子として、その前に属性リストを付けます。

属性リストの意味については、 GCC の変数属性のドキュメントを参照してください。section変数を名前付きセクションに配置します。これにより、リンカーは変数を特別なアドレスに再配置したり、他の興味深いことを実行したりできspaceます。文書化されていませんがspace(prog)、プログラムのアドレス空間に値を配置する代わりに、値を配置する指示のように聞こえますハーバード アーキテクチャ マシンのデータ アドレス空間。

于 2013-06-24T00:40:59.797 に答える