私はダウンロードしたライブラリを作成するときに、奇妙なコンパイルエラーをGCCから取得します。GCCのコンパイルエラー: 'strlen'の宣言が利用可能でなければなりません
エラーはすべてこのようなものです:ここでは
Catalogue.h:96: error: there are no arguments to ‘strlen’ that depend on a template parameter, so a declaration of ‘strlen’ must be available
は、ライン96の周りのコードです:
GaCatalogueEntry(const char* name, T* data)
{
if(name)
{
_nameLength = (int)strlen(name); // LINE 96
// copy name
_name = new char[ _nameLength + 1 ];
strcpy(_name, name); // LINE 100: similar error
_data = data;
return;
}
_name = NULL;
_nameLength = 0;
_data = NULL;
}
は、私はこれらのコンパイルエラーを修正するために何ができますか?
名前に '_ [a-z]。*'と一致する名前のグローバルセットがあるようですが、それらの名前は実装用に予約されています。 ( '_ [a-z]。*'はローカル変数やクラスメンバのような非グローバル名ではOKです) – MSalters
グローバル変数ではないと思いますが、メンバ変数です。私はGaCatalogueEntryがテンプレート化されたクラスのメンバ関数であると推測しています。しかし、あなたは正しいです。接頭辞のアンダースコアを含む名前付け規則を持つことは危険です。メンバ変数の場合は、m_接頭辞または_接尾辞を使用する方がよいでしょう。 –