全村的希望· 2023-08-22 22:35 采纳率: 89.5%
浏览 3
已结题

对于使用extern关键字对作用域的影响

当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需再为它另外开辟存储单元。这时其作用域从extern说明处起,延伸到该函数末尾。
就是说在另一个文件中使用这个关键字,这个已经定义过的全局变量在这个文件中的作用域就是从关键字的位置开始
例如

// 文件1

int addNumbers(int a, int b) {
    return a + b;
}

// 文件2

#include <stdio.h>

// 声明自定义函数
extern int addNumbers(int a, int b);
void printResult(int result);

int main() {
    int result = addNumbers(3, 5); // 调用自定义函数
    printResult(result); // 调用自定义函数打印结果
    return 0;
}

void printResult(int result) {
    printf("Result: %d\n", result);
}

如果将extern int addNumbers(int a, int b);放在自定义函数printResult后面进行声明,产生的结果就会跟上面正确的代码段不一样对吗

  • 写回答

3条回答 默认 最新

  • 滴水不穿石 2023-08-22 23:00
    关注

    extern表示函数在其它地方定义过,这行表示声明函数,从声明处开始到该文件结尾都有效,若你把声明放在最后,那声明的前面肯定无法使用了啊,懂了么?
    这里说的是顶层声明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 网络分析设施点无法识别
  • ¥15 状态图的并发态问题咨询
  • ¥15 PFC3D,plot
  • ¥15 VAE模型编程报错无法解决
  • ¥100 基于SVM的信息粒化时序回归预测,有偿求解!
  • ¥15 物体组批优化问题-数学建模求解答
  • ¥15 微信原生小程序tabBar编译报错
  • ¥350 麦克风声源定位坐标不准
  • ¥15 apifox与swagger使用
  • ¥15 egg异步请求返回404的问题