コンパイラの警告 (レベル 1) C4788
'識別子' : 識別子は '数値' 文字に切り詰められました
コンパイラによって、関数名に使用できる最大文字数が制限されます。 コンパイラは、EH/SEH コード用の関数レットを生成するときに、関数名の前に "__catch"、"__unwind"、または別の文字列などのテキストを付けることで、funclet 名を形成します。
作成された funclet 名が長すぎる場合、コンパイラはこれを切り捨てて C4788 を生成します。
この警告を解決するには、元の関数名を短くします。 関数が C++ 関数テンプレートまたはメソッドの場合は、名前の一部に typedef を使用します。 次に例を示します。
C1<x, y, z<T>>::C2<a,b,c>::f
これは次のように置換されます。
typedef C1<x, y, z<T>>::C2<a,b,c> new_class ;
new_class::f
この警告は x64 コンパイラでのみ出力されます。