【C】extern 关键字的使用

extern关键字的作用就是告诉编译器,去别的地方找这个函数或者变量的定义。

1、引用另一个文件中的变量

main.c

#include<stdio.h>

int main()
{
    extern int num;
    printf("%d",num);
    return 0;
}

b.c

#include<stdio.h>

int num = 5;

void func()
{
    printf("fun in a.c");
}

2、引用另一个文件中的函数

这里main函数中引用了b.c中的函数func。因为所有的函数都是全局的,所以对函数的extern用法和对全局变量的修饰基本相同,需要注意的就是,需要指明返回值的类型和参数。

main.c

#include<stdio.h>

int main()
{
    extern void func();
    func();
    return 0;
}

b.c

#include<stdio.h>

const int num=5;
void func()
{
    printf("fun in a.c");
}

3、与头文件的关系

头文件就是放各种接口定义的地方,不要在头文件中定义任何东西,比如全局变量:

/*xx头文件*/
#ifndef _XX_头文件.H
#define _XX_头文件.H
int A;
#endif

这个头文件如果被多个文件引用,在编译的时候是不会报错的,但是在链接的时候编译器会报错:重复定义全局变量。这个时候就需要加上extern关键字,表示这是一个声明,而不是定义。

总结

extern关键字的作用就是声明,因为函数是有声明语法的,省略函数体。所以一般函数声明是省略了extern关键字。

int func(void);
等效于
extern int func(void);

但是变量是没有单独的声明语法,所以要表示变量声明必须加上extern关键字。

int a; // 这是定义
extern int a; // 这是声明

参考

1、https://blog.csdn.net/xingjiarong/article/details/47656339
2、http://lpy999.blog.163.com/blog/static/117372061201182051413310/

posted @ 2024-05-26 21:06  NotReferenced  阅读(19)  评论(0编辑  收藏  举报