GCC编译错误:'strlen'的声明必须可用

时间:2009-10-27 08:56:46

标签: c++ gcc compiler-errors

我的问题是,当我想创建一个下载的库时,我会从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;
}

如何解决这些编译错误?

4 个答案:

答案 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()