識別子の最大長を表す標準を覚えていないので、理論的にはの長さはです。実生活では、これらの名前は少なくともコンパイラとリンカーの実装によって制限される可能性があります。共通(ビルド)システム上のC/C++識別子の最大長はどれくらいですか?
これは、すべてのシステム
int a;
このスニペット
#!/usr/bin/perl
print "int" . "b" x 2**16 . ";";
に取り組むべきである一方では(GCC/mingwのを使用して)リンク/コンパイル中ld
とstd::
代に未定義の参照を与えるdeclarationenを作成します。
異なるシステム上の識別子のサイズ制限はいくらですか?
は、名前の長さ制限は*マングルされた名前*のためのものであることを注意してください。私は、テンプレート関数を書いて、いくつかの 'boost :: transform_iterator'を渡すと、MSVCからのいくつかの厄介な警告によって多くの時間を暴かれました。インスタンス化の難解な名前はちょっと狂ったように長くなります。 –
@Alexandre:今まで私はその問題を抱えていませんでした。私が覚えているテンプレートに関連する唯一の問題は、メタプログラミングを使ったいくつかのプロジェクトでテンプレートの深さを増やさなければならないということでした。 – mbx
gccにはこのような問題はありません(@Andersの回答を参照)。これは、混乱した名前が2048文字を超える場合、MSツールでときどき起こるという警告のみです。しかし、通常はあなたのビルドに大きな影響を与えません。 –