我的问题是,当我想创建一个下载的库时,我会从GCC得到一些奇怪的编译错误,编译器要求纠正的代码似乎是正确的。
错误都是这样的:
Catalogue.h:96:错误:没有 'strlen'的参数依赖于a 模板参数,所以一个声明 'strlen'必须可用
以下是第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;
}
如何解决这些编译错误?
答案 0 :(得分:10)
您可能只需要包含包含strcpy和strlen库函数的标头。
#include <string.h>
或(最好是C ++)
#include <cstring>
答案 1 :(得分:4)
在C ++中,strlen()函数是字符串库的一部分,它几乎看起来没有包含头文件。
是否包含在任何地方?
include <string.h>
如果没有,请尝试添加它,看看是否能解决问题。
答案 2 :(得分:3)
代码有缺陷。你可能错过了#include <string.h>
。
如果您不想更改代码,请将-fpermissive
添加到编译器选项中。 (参见GCC documentation。)
答案 3 :(得分:1)
必须提供'strlen'声明
包含string.h
或<cstring>
(C ++)以宣告strlen()
。