0

我在将外部函数导入到主 c 文件时遇到问题。

这是我的最小代码:

/* main.c */

#include<stdio.h>
extern int func() 

int main(){
    extern int func();
}

/*external file with one function that I want to     
import*/

#include<stdio.h>

int func(){
    printf("Hello World Again\n");
}

我像这样编译和运行 - gcc main.c然后./a.out但什么也没发生。任何的想法 ?

4

4 回答 4

5

func您还必须编译包含的文件

gcc -Wall main.c external_file.c

(请注意,-Wall编译器命令中的 不是绝对必要的,但是非常好的做法)

正如其他人所指出的,您还需要修复要调用的代码,func而不仅仅是重新声明它。

于 2013-01-16T15:03:25.113 回答
2

因为你只声明了函数,你从来没有调用过它!

extern int func();

声明一个函数。要调用它,您必须具有:

int main()
{
   func();
} 
于 2013-01-16T15:03:16.050 回答
0

您只是在 main 函数中再次声明..

您需要调用该函数才能工作..#include

extern int func() 

int main(){
    func();
}

/*external file with one function that I want to     
import*/

#include<stdio.h>

int func(){
    printf("Hello World Again\n");
}
于 2013-01-16T15:03:49.700 回答
0

编辑:问题已经改变。

extern仅用于外部变量。您只需要该功能的原型。

#include <stdio.h>

void func(void);    /* <-- prototype */

int main(int argc, char * argv[])
{
    func();

    return 0;
}

void func(void){
    printf("Hello World Again\n");
}

注意几件事。原型int func()意味着在 C 中没有参数检查- 这与 C++ 不同。此外,您没有从函数返回任何内容,因此我将其替换为void func(void)

于 2013-01-16T15:04:41.180 回答