使用extern关键字在c中导入函数

时间:2013-01-16 15:02:01

标签: c function import extern

我将外部函数导入主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 个答案:

答案 0 :(得分:4)

您必须编译包含func

的文件
gcc -Wall main.c external_file.c

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

正如其他人所说,您还需要修改代码才能调用func,而不是仅仅重新声明它。

答案 1 :(得分:2)

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

extern int func();

声明一个函数。要打电话给你,你必须:

int main()
{
   func();
} 

答案 2 :(得分:0)

你只是在主要功能中再次声明..

你需要调用该函数才能工作.. #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");
}

答案 3 :(得分: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)