c - 外部代码不起作用

标签 c extern

为什么下面的代码不起作用?请解释一下。

#include<stdio.h>
#include<stdlib.h>

int main(int number, char arg[])
{
    extern int i;
    i = 5;
    printf("%d",i);
    return 0;
}
<小时/>
#include<stdio.h>
#include<stdlib.h>

int main(int number, char arg[])
{
    extern int i;
    i = (int) malloc(sizeof(int));
    i = 5;
    printf("%d",i);
    return 0;
}

最佳答案

extern 用于指定变量存在,但尚未定义。您不创建变量,仅向编译器指定它存在。如果没有,您将在链接时出错。

我建议您阅读更多有关extern keyword的信息

一个简单的使用示例是两个 .c 文件,一个将您的 extern 变量设置为全局变量,另一个打印此变量

文件.c

int value = 5;

main.c

int main() {
  extern int value;

  printf("%i\n", value);
  return 0;
}

使用gcc file.c main.c编译此文件将输出5

关于c - 外部代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998900/

相关文章:

我可以在 C 中创建具有 Unresolved 依赖关系的函数吗?

C++ 外部类定义

c - 静态函数的外部声明是否会破坏内部链接?

c - `extern` 关键字在 c99 标准中是可选的吗?

c++ - 内存满时文件读取失败

c - 使用指针对数组进行排序 - C 编程

objective-c - Objective-C : NSString* myVar; vs. NSString *myVar;

c - 结构体中取消引用指针的错误

c - 带 fifo 的线程

c++ - C++ 中的这些 extern 声明有什么区别?