刚刚学习如何在 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++ 是不同的语言。