静的関数をファイルに持たせるユーティリティとは何ですか?C++静的ローカル関数とグローバル関数
ファイル内のグローバル機能を持つこととの違いは何ですか?
int Square(int i)
{
return i * i;
}
静的関数をファイルに持たせるユーティリティとは何ですか?C++静的ローカル関数とグローバル関数
ファイル内のグローバル機能を持つこととの違いは何ですか?
int Square(int i)
{
return i * i;
}
ファイル内に静的関数を持たせるユーティリティとは何ですか?
これらの関数を使用して、同じファイル内の他の関数に共有実装ロジックを提供できます。ファイル固有のさまざまなヘルパー関数は、ファイル静的と宣言するのに適しています。
ファイル内でグローバル機能を持つ方法とどのように違いますか?
これらはリンカーには見えないため、他のコンパイル単位で同じシグネチャの関数を定義することができます。名前空間を使用すると、この問題はかなり緩和されますが、ファイル-は、Cプログラミング言語から継承された機能であるため、名前空間の前に機能します。
VS
static int Square(int i)
{
return i * i;
}
static
機能は、単にリンカー(すなわちtranslation units他にそれが見えるように)関数をエクスポートすることができないことを意味します。現在の翻訳単位に対して機能を「非公開」にします。これは、匿名の名前空間で関数をラップするのと同じです。
namespace {
int Square(int i)
{
return i * i;
}
}
は一般的に、匿名の名前空間を使用すると、これを達成するのではなく、static
キーワードを使用しての好適なC++の方法です。
なぜそれが好ましいですか?それは私にとってもっと冗長なようです。 – rozina
スタティック関数は、定義されたファイルでのみ表示されます。 特定のファイルの外部には参照できません。ワードで
、リンケージ。 static
関数には内部リンケージがあります。つまり、翻訳単位の外側には表示されません。
グローバルな関数がデフォルトで外部にある、つまり "void fun(){}"が "extern void fun(){}"と同じであることを読んだときに、私はすべて明らかになりました。ヘッダーに記述すると、定義されている実装ファイル(定義されているポイントの下)でのみ使用できます。 –
@Simon Knappプロトタイプを使ってさまざまなトランジションユニットで使用できます。 –