同一文件中的 C 函数"Undefined reference to"错误



刚刚学习如何在 C 中使用指针,并且在声明使用指针作为参数的函数时遇到错误

#include <stdio.h>
int a[10];
int strlen(const char *str);
int main(){
    printf("%d", strlen("This works"));
    return 0;
}
int strlen(char *s){
    int n;
    for (n = 0; *s != ''; s++)
        n++;
    return n;
}

编译时收到以下错误

Undefined reference to 'strlen(char const*)'

在声明中,你有

int strlen(const char *str); 

但是,在定义中,它变成了

int strlen(char *s){

注意到区别了吗?若要使代码正常工作,必须使定义和声明相同,否则将出现错误,因为链接器找不到int strlen(const char *str);

若要修复此错误,请将声明更改为

int myStrlen(const char *str); 

和定义

int myStrlen(const char *s){

再试一次。

由于 strlen() 是 C 库函数,因此不应使用此名称。另外,我说"再一次",而不是"它会工作",因为我们没有使用相同的编译器,所以我不确定这是否会解决您在实现中的问题。如果您使用 C++ 编译器来编译此代码,则最好使用 C 编译器,因为 C 和 C++ 是不同的语言。

相关内容

最新更新