extern 在 C 中是什么意思?

小夏 科技 更新 2024-02-01

在 C 中,——extern 关键字用于声明变量或函数,表示它是在其他文件中定义的。 当变量或函数在文件中声明为 -extern- 时,它会告诉编译器该变量或函数已在另一个文件中定义,因此不需要在当前文件中再次定义。

extern 关键字的主要目的是实现变量或函数的共享。 当多个文件需要使用相同的变量或函数时,可以将它们的定义放在一个单独的文件中,然后在需要使用它们的其他文件中使用 -extern- 关键字声明它们。 这避免了重复的定义,提高了可维护性和可重用性。

下面是一个简单的示例:

假设我们有一个名字叫 -mathc——,它定义了一个平方函数 - square——:

// math.c

#include

int square(int x) {

return x * x;

现在,我们要添加一个名为 - main 的新名称c——文件。 为了实现这一点,我们需要使用 -mainc--use-extern-keyword 声明-square-函数:

// main.c

#include

声明 square 函数。

extern int square(int x);

int main()

int num = 5;

int result = square(num);

printf("the square of %d is %d, num, result);

return 0;

在此示例中,我们在 - mainC———extern int square(int x);—声明 -square- 函数。 这告诉编译器我们去过其他地方(即 -mathc-file) 定义了 -square- 函数,因此无需在此处再次定义。然后,我们可以转到 -mainc——square— 函数来计算整数的平方。

需要注意的是,使用 -extern- 关键字声明变量或函数时,无需指定其类型。 编译器根据前面的定义自动推断类型。 例如,在上面的示例中,我们没有明确指定 -square- 函数的类型(例如,-int square(int x);— 因为编译器可以从前面的定义中推断出它是一个返回整数类型的函数。

此外,如果变量或函数在多个文件中声明为 -extern——,则它们必须具有相同的名称和类型。 否则,编译器将无法确定应使用哪个定义。

extern 关键字在 C 中用于声明变量或函数,表示它是在其他文件中定义的。 通过使用 -extern- 关键字,我们可以共享变量或函数,避免重复定义,并提高可维护性和可重用性。 C 语言基础

相似文章

    和在c语言中的区别

    在 C 语言中,符号 和 虽然相似,但在功能和用法上却存在显著差异。混淆这两者通常会导致编程错误和逻辑问题。本文将深入探讨这两个运算符的定义 功能和区别,以及它们在 C 语言中的实际应用。在 C 中,用于将右边的值分配给左边的变量。这是一个赋值操作,它不比较变量,而是更改变量的值。用于比较两个值是否...

    C 语言中 break 语句的魔力在于让你的代码像火箭一样飞起来

    C break 语句是用于跳出循环或 switch 语句的控制结构。用于提前结束循环或switch语句,避免不必要的计算或执行。break 语句的使用方式如下 在while循环中,如果满足条件,则可以使用break语句跳出循环并执行循环后面的语句。例如 输出为 在for循环中,如果满足条件,则可以使...

    一种在 C 中保留十进制数的除法方法

    在 C 中,除法运算通常返回整数结果。但是,有时我们需要进行除法运算并获得保留小数的结果,这在需要准确计算和输出的情况下很重要。本文将详细介绍如何在 C 中除以和保留十进制数,包括使用浮点数 类型转换和使用数学h 库函数等的提示和注意事项 在 C 中保留小数的除法描述如下 .使用浮点数 最简单的方法...

    本文将教你如何在 C 语言中使用浮点数

    在 C 中,float 是一种用于存储浮点数的数据类型,即带有小数部分的数字。以下是使用 float 类型的基本方法 声明浮点变量 float myfloat 声明一个名为 myfloat 的浮点变量。分配 myfloat . 遗嘱 分配给 myfloat 或者与声明同时初始化 float myfl...

    C语言和C语言有什么区别

    C 和 C 之间有几个主要区别 面向对象编程 OOP C 支持面向对象编程,而C不支持。这意味着 C 可以使用类和对象,而 C 主要是基于函数的。标准模板库 STL C 提供了一组标准模板库 STL 其中包括许多用于常见数据结构和算法操作的预定义类和函数。C 中没有这样的库。异常处理 C 支持异常处...