私はC++でこの質問への回答の多くを発見したが、私はC.C相当(起動時に一回実行します)
で厳密に興味を持って、私はCで、円形のリンクリストを持っている、と私それが最初にアクセスされる前にダミーヘッダーノードで初期化したいとします。ダミーヘッダーノードは、静的に割り当てられたグローバル変数です。これは私の現在の解決策です:
static once = 1;
if(once){
once = 0;
// Setup code
}
これは動作しますが、このリンクされたリストを使用するすべての関数に入れなければなりません。 (もちろん、私はこのコードを独自の関数に入れることができるので、他のすべての関数でその関数を呼び出す必要がありますが、それほど優れているわけではありません)もっと良い方法はありますか?私は、次の構造体を持っている場合たとえば、:
struct node {
int value;
struct node *next;
}
は、それ自体へのnext
値のポイントとなるようリテラルとしてこれらの構造体のいずれかを、初期化する方法はありますか? 「リテラルとして初期化」により、
、私はこの意味:(私はおそらく間違った用語ですみません)
struct test {
int i;
double d;
};
struct test magic = {1, 2.3}; // This can just be done at the top of the c file, outside of any functions
int someFunction(){...}
:あなたが何かを行うには、同じ目的を達成する前に
main()
でスタートアップ」コードでNCE。あなたの例のコードは上手く見えます。どうしたの? – 5gon12eder