代码之家  ›  专栏  ›  技术社区  ›  AlphaGoku

Extern本地声明和定义的函数[关闭]

c
  •  0
  • AlphaGoku  · 技术社区  · 7 年前

    我有两个 c 文件夹:

    int main()
    {
        foo();
        return 0;
    }
    

    傅。c

    void foo(void);
    
    void foo(void)
    { 
        printf("Hi");
    }
    

    因为所有功能都是 extern 默认情况下,为什么不能 主要的c foo() ?
    void foo(void); 傅。h ,它仍处于

    未定义对foo的引用

    编译此代码时。

    2 回复  |  直到 7 年前
        1
  •  3
  •   David Z    7 年前

    main.c ,它不知道里面有什么 foo.c

        2
  •  0
  •   William Pursell    7 年前

    您的代码没有重大问题(有些人可能认为下面给出的警告是“重大的”)。您可能只是没有正确构建。但您可以使用以下工具进行构建:

    $ gcc -c main.c
    main.c: In function ‘main’:
    main.c:4:5: warning: implicit declaration of function ‘foo’ [-Wimplicit-function-declaration]
         foo();
         ^~~
    $ gcc -c foo.c
    foo.c: In function ‘foo’:
    foo.c:7:6: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
          printf("Hi");
          ^~~~~~
    foo.c:7:6: warning: incompatible implicit declaration of built-in function ‘printf’
    foo.c:7:6: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
    $ gcc main.o foo.o
    $ ./a.out
    Hi$