我收到以下错误
cc string.c -o string
string.c:7:16: warning: implicit declaration of function 'get_string' is invalid in C99
[-Wimplicit-function-declaration]
string name = get_string();
^
string.c:7:9: warning: incompatible integer to pointer conversion initializing 'string' (aka 'char *')
with an expression of type 'int' [-Wint-conversion]
string name = get_string();
^ ~~~~~~~~~~~~
2 warnings generated.
ld: can't write output file: string for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [string] Error 1
当我尝试
时make string
string.c的代码:
1 #include <stdio.h>
2 #include <cs50.h>
3
4 int main(void)
5 {
6 printf("Name: ");
7 string name = get_string();
8 printf("hello, %s\n", name);
9
10 }
代码与第1周的课程相同。
请记住,我已经下载了cs50.h并按照OSX系统CS50库手册中的说明安装了它。
答案 0 :(得分:3)
根据cs50 manual,功能名称为GetString()
而不是get_string()
。因此,过时的implicit the function declaration启动(自C99起无效),导致编译器假定get_string()
返回int
。但由于get_string()
没有定义,最终链接失败。
变化:
string name = get_string();
为:
string name = GetString();