読者です 読者をやめる 読者になる 読者になる

とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

Re: C言語の変数を初期化で相互/循環参照させる。static は無理?

プログラム言語C

C言語の変数を初期化で相互/循環参照させる。static は無理?

多分、関数のプロトタイプはあるけど、変数のプロトタイプは無いとかそういうのが問題。

いいえ。仮定義(tentative definition)があります。

どうしてもやりたかったら、実行時に代入するしかない?
でもそれだと、const にできなくなる。

仮定義を使えば初期化できますし,const にもできます。

#include<assert.h>

static const void* const a; // ここが仮定義
static const void* const b = &a;
static const void* const a = &b; // 初期化子を使ったここで定義になる

int main()
{
 assert(a == &b);
 assert(b == &a);
}