グローバル変数を初期化してそれ自体を指すことができるかどうかを確認したかったのです。
#include <stdio.h>
struct foo { struct foo *a, *b; } x = { &x, &x };
int main()
{
printf("&x = %p, x.a = %p, x.b = %p\n", &x, x.a, x.b);
return 0;
}
このコードは、で期待どおりにコンパイルおよび実行されますgcc
(3つのポインターはすべて同じように出力されます)。
私は知りたいです:
- これは信頼できますか?
- これは標準ですか?
- これは持ち運び可能ですか?
編集:明確にするために、私はx
それ自身のイニシャライザーでのアドレスの可用性に疑問を持っています。