老沫白 发表于 2022-12-23 17:35:08

C/C++的extern

我感觉用extern和不用extern声明变量在连接编译中都是一样的啊,为什么要用extern

人造人 发表于 2022-12-23 17:51:48

这个代码也可以不加extern吗?

sh-5.1$ ls
a.cb.c
sh-5.1$ cat a.c
#include <stdio.h>

extern int b;

int main(void) {
    printf("%d\n", b);
    return 0;
}
sh-5.1$ cat b.c
int b = 123;
sh-5.1$ gcc -g -Wall -o main a.c b.c
sh-5.1$ ./main
123
sh-5.1$

jackz007 发表于 2022-12-23 18:50:24

       这个代码,试试能否编译过去?
#include <stdio.h>

int main(void)
{
      printf("x = %d\n" , x) ;
}

int x = 9                      ;
      再试试这个呢:
#include <stdio.h>

extern int x                   ;

int main(void)
{
      printf("x = %d\n" , x) ;
}

int x = 9                      ;

老沫白 发表于 2022-12-24 09:47:04

jackz007 发表于 2022-12-23 18:50
这个代码,试试能否编译过去?

      再试试这个呢:

我知道extern有这个作用的,可是我问的是连接编译时阿

老沫白 发表于 2022-12-24 09:53:19

人造人 发表于 2022-12-23 17:51
这个代码也可以不加extern吗?

大佬,那么在头文件中声明一下不就可以了吗

老沫白 发表于 2022-12-24 09:56:23

人造人 发表于 2022-12-23 17:51
这个代码也可以不加extern吗?

噢噢噢噢,我懂了

人造人 发表于 2022-12-24 12:08:22

老沫白 发表于 2022-12-24 09:53
大佬,那么在头文件中声明一下不就可以了吗

可以
页: [1]
查看完整版本: C/C++的extern