私はCを初めて使っています。サンプルコードを含め、Cの「ファイルの有効範囲」について説明する本が私の目の前にあります。しかし、コードはファイルスコープ付き変数の宣言と初期化のみを行います。たとえば、違法な方法で変数スコープにアクセスしようとすると変数のスコープを検証しません。そう!科学の精神の中で、私は実験を行いました。Cでは、グローバル変数のスコープを宣言されているファイルに限定するにはどうすればよいですか?
ファイルbar.c
:
static char fileScopedVariable[] = "asdf";
ファイルfoo.c
:
#include <stdio.h>
#include "bar.c"
main()
{
printf("%s\n", fileScopedVariable);
}
私の本によると、Googleに、printf()
への呼び出しは失敗しなければならない - しかし、それはしません。 foo.exe
は文字列 "asdf"を出力し、正常終了します。私は非常にファイルスコープを使用したいと思います。私は何が欠けていますか?
静的な 'file scoped'で定義された変数を呼び出すことには違いがあります。 #includeされたすべてのファイルに再帰的に貼り付けた結果、1つの翻訳単位に制限されています。 – Eric