これを例に挙げると、
int a = 100;
int b = a;
int main(int argc, char **argv, char ** env)
{
printf("The value of b=%d\r\n",b);
return 0;
}
これで、期待どおりにコンパイル エラーが発生しました。
[joshis1@localhost global_var]$ gcc global_var.c -o global_var.out
global_var.c:4:1: error: initializer element is not constant
int b = a;
^
ここで知りたいのは、なぜエラーが発生するのかということです。コンパイラがこの操作を制限する理由。初期化されたグローバル変数がデータ セグメントに格納されることを理解しています。コンパイラは最初に a の値を解決し、次に同じ値を b に割り当てることができます。なぜこの機能がないのですか?コンパイラが行うのは複雑ですか? この機能の背後にある根拠はありますか、それとも C の落とし穴ですか?