隐式声明函数' get_string'

时间:2017-01-09 18:16:57

标签: c implicit cs50 getstring

我收到以下错误

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库手册中的说明安装了它。

1 个答案:

答案 0 :(得分:3)

根据cs50 manual,功能名称为GetString()而不是get_string()。因此,过时的implicit the function declaration启动(自C99起无效),导致编译器假定get_string()返回int。但由于get_string()没有定义,最终链接失败。

变化:

string name = get_string();

为:

string name = GetString();