现在位置: 首页 > C 教程 > 正文

C extern 关键字

C 变量 C 变量

在 C 语言中,使用 extern 关键字声明的变量是外部变量,表示该变量在别处(通常是其他文件)定义。

extern 关键字在 C 语言中用于声明外部变量或函数,使得它们可以在多个文件中共享和使用。

extern 主要用于实现模块化编程和代码的分离。

extern 变量的声明和定义通常放在不同的文件中。


extern 变量

下面演示如何在一个文件中定义外部变量,并在另一个文件中声明和使用它。

1、定义和初始化(在一个文件中 file1.c)

实例

#include <stdio.h>

// 定义并初始化外部变量
int d = 3;
int f = 5;

void printExternVariables() {
    printf("d: %d, f: %d\n", d, f);
}

2、声明并使用(在另一个文件中 file2.c)

实例

#include <stdio.h>

// 声明外部变量
extern int d;
extern int f;

// 声明外部函数(必须在调用之前声明)
extern void printExternVariables();

int main() {
    // 使用外部变量
    printf("d in main: %d\n", d);
    printf("f in main: %d\n", f);
   
    // 调用其他文件中定义的函数
    printExternVariables();
   
    return 0;
}

将 file1.c 和 file2.c 一起编译并运行(编译命令见下文),输出结果为:

d in main: 3
f in main: 5
d: 3, f: 5

extern 函数

类似于变量,函数也可以在一个文件中定义,在另一个文件中声明并使用。

1、定义函数(在一个文件中 file1.c)

实例

#include <stdio.h>

void printMessage() {
    printf("Hello from printMessage!\n");
}

2、声明并使用函数(在另一个文件中 file2.c)

实例

#include <stdio.h>

// 声明外部函数
extern void printMessage();

int main() {
    // 调用外部函数
    printMessage();
    return 0;
}

3、编译多个文件

为了使用 extern 变量和函数,必须将所有相关文件一起编译。例如:

gcc file1.c file2.c -o program
./program

上面的函数示例编译运行后,输出结果为:

Hello from printMessage!

注意事项

使用 extern 时需要注意以下几点:

注意点说明
定义和初始化外部变量必须在一个文件中定义和初始化,而在其他文件中仅声明,extern 声明不能进行初始化。
作用域extern 变量和函数具有全局作用域,可以在程序的任何地方访问。
重复定义避免在多个文件中重复定义相同的变量或函数,这会导致链接错误。
头文件使用通常将 extern 声明放在头文件中,然后在需要的源文件中包含该头文件。

头文件的使用

为了简化管理,可以使用头文件声明 extern 变量和函数。

variables.h 文件代码:

#ifndef VARIABLES_H
#define VARIABLES_H

// 声明外部变量
extern int d;
extern int f;

#endif

functions.h 文件代码:

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

// 声明外部函数
void printExternVariables();
void printMessage();

#endif

然后在源文件中包含头文件:

file1.c 文件代码:

#include <stdio.h>
#include "variables.h"
#include "functions.h"

// 定义并初始化外部变量
int d = 3;
int f = 5;

void printExternVariables() {
    printf("d: %d, f: %d\n", d, f);
}

void printMessage() {
    printf("Hello from printMessage!\n");
}

file2.c 文件代码:

#include <stdio.h>
#include "variables.h"
#include "functions.h"

int main() {
    // 使用外部变量
    printf("d in main: %d\n", d);
    printf("f in main: %d\n", f);
   
    // 调用外部函数
    printExternVariables();
    printMessage();
   
    return 0;
}

同样使用 gcc file1.c file2.c -o program 编译运行,输出结果为:

d in main: 3
f in main: 5
d: 3, f: 5
Hello from printMessage!

这样通过头文件管理 extern 声明,代码更加清晰和易于维护。


C 变量 C 变量