この質問からの拡張
このコードを理解するのに問題があります。
struct foo myfoo; // --> Is it forward declaration or object creation. ?
struct foo
{
int a;
};
int main()
{
return 0;
}
矢印でマークされたコードで-->
は、前方宣言またはオブジェクトの作成ですか。?
それが前方宣言である場合、何とstruct foo;
呼ばれますか?オブジェクトの作成またはインスタンス化の場合、構造体定義の前にどのようにオブジェクトを作成できますか。
コンパイラでは正常gcc
に動作しますが、他のコンパイラではエラーが発生します。
gcc -Werror -Wall tst.c -o tst
?のこの振る舞いについての提案や説明はありgcc
ますか?文書化されているように、どこにも見つかりませんでした。