刚刚学习如何在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 != '\0'; s++)
n++;
return n;
}
编译时收到以下错误
Undefined reference to 'strlen(char const*)'
答案 0 :(得分:4)
在声明中,您有
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 ++是单独的语言。