user-0 提问: 如何在一个c文件里面使用另一c文件里面的全局变量啊

回复:
user: user-1
content: 没准我错把汇编里面的public当成c里面的了。 不就道个歉吗？ 你不知道我还是CSDN老人中脸皮最厚的人（没有之一）吧。 过去叫“厚颜无耻”；现在叫“心理素质过硬”。

user: user-2
content: 你直接在a.c里面定义

user: user-0
content: 引用 1 楼 gotofly21 的回复:b.c中extern 中不能初始化 什么意思啊

user: user-0
content: 引用 2 楼 q3733353520 的回复:a.c   int a = 0;  b.c  extern int a; 我在a.h中定义 int xx =1;在a.c中xx = test; 然后在b.c中extern xx.然后去取xx的值，发现还是1，而不是test. 我要取到test的值的……

user: user-3
content: b.c中用时还没初始化

user: user-4
content: a.c   int a = 0;  b.c  extern int a;

user: user-5
content: b.c中extern 中不能初始化

user: user-6
content: # define public /* PUBLIC FUNCTION */

user: user-6
content: 引用 25 楼 zhao4zhong1 的回复:[quote=引用 24 楼 sholber 的回复:] [quote=引用 20 楼 sholber 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 17 楼 sholber 的回复:] [quote=引用 16 楼 zhao4zhong1 的回复:] 引用 9 楼 zhao4zhong1 的回复: a.c   public int a = 0;  b.c  extern int a;  我翻了好久的资料，也没发现C里有'public' 赵四老湿，咋回事涅？[/quote] 这是很老很老的C编译器的要求。[/quote]  赵老湿，俺是小菜，你一定要告诉俺是哪个编译器的要求。是关键字吗？[/quote]  赵老湿，快快现身！[/quote] 不是TC2.0就是CC1、CC2,记不太清了。难道你要精确考证一下？（然后证明本ID也有信口雌黄的时候？）[/quote]  这事很重要，当然要精确考证了，带着赵老湿的名誉啊。 不过，据在下所知，这个public应该是出自苹果的开源项目，它是一个宏，和编译器无关： www.opensource.apple.com/source/less/less-9/less/less.h  /*  * Copyright (C) 1984-2002  Mark Nudelman  *  * You may distribute under the terms of either the GNU General Public  * License or the Less License, as specified in the README file.  *  * For more information about less, or for information on how to   * contact the author, see the README file.  */   /*  * Standard include file for "less".  */  /*  * Defines for MSDOS_COMPILER.  */   /*这里略于若干行*/   #if HAVE_CONST #define	constant	const #else #define	constant #endif  #define	public		/* PUBLIC FUNCTION */  /* Library function declarations */  #if HAVE_SYS_TYPES_H #include <sys/types.h> #endif   看起来，public这个宏仅仅告诉大家，一个标识符或者函数具有外部作用域。编译时，它被扩展为‘啥也没有’。这好像就是你所说的语法糖吧。 如果考证属实，本人身为菜鸟，将代表广大菜鸟，向CSDN首席宗湿表示强烈不满，强烈要求就错误的论调道歉！哼哼

user: user-1
content: 引用 24 楼 sholber 的回复:[quote=引用 20 楼 sholber 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 17 楼 sholber 的回复:] [quote=引用 16 楼 zhao4zhong1 的回复:] 引用 9 楼 zhao4zhong1 的回复: a.c   public int a = 0;  b.c  extern int a;  我翻了好久的资料，也没发现C里有'public' 赵四老湿，咋回事涅？[/quote] 这是很老很老的C编译器的要求。[/quote]  赵老湿，俺是小菜，你一定要告诉俺是哪个编译器的要求。是关键字吗？[/quote]  赵老湿，快快现身！[/quote] 不是TC2.0就是CC1、CC2,记不太清了。难道你要精确考证一下？（然后证明本ID也有信口雌黄的时候？）

user: user-6
content: 引用 20 楼 sholber 的回复:[quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 17 楼 sholber 的回复:] [quote=引用 16 楼 zhao4zhong1 的回复:] 引用 9 楼 zhao4zhong1 的回复: a.c   public int a = 0;  b.c  extern int a;  我翻了好久的资料，也没发现C里有'public' 赵四老湿，咋回事涅？[/quote] 这是很老很老的C编译器的要求。[/quote]  赵老湿，俺是小菜，你一定要告诉俺是哪个编译器的要求。是关键字吗？[/quote]  赵老湿，快快现身！

user: user-4
content: 楼上说了  要一起编译    而且b.c中 使用必须在extern int xx之后

user: user-7
content: 在a.c里  int xx=test; 在b.c里  extern int xx; 然后就可以随便用了。

user: user-6
content: 引用 19 楼 zhao4zhong1 的回复:[quote=引用 8 楼 sholber 的回复:] 方法不对滴。 gcc -o test b.c a.c  另外，C中好像没有全局（global），只有外部（external） 以下，如果a是全局的，那么，在a的定义点之前应该也能使用： a ++; int a = 0; 但实际上不能。 参考8楼。 gcc命令行中必须和你的extern变量实际所在的那个.c或.cpp或.a或.so一起编译，除非是操作系统预定义变量比如errno之类的才不需要。[/quote] 木有明白赵老湿啥意思

user: user-6
content: 引用 18 楼 zhao4zhong1 的回复:[quote=引用 17 楼 sholber 的回复:] [quote=引用 16 楼 zhao4zhong1 的回复:] 引用 9 楼 zhao4zhong1 的回复: a.c   public int a = 0;  b.c  extern int a;  我翻了好久的资料，也没发现C里有'public' 赵四老湿，咋回事涅？[/quote] 这是很老很老的C编译器的要求。[/quote]  赵老湿，俺是小菜，你一定要告诉俺是哪个编译器的要求。是关键字吗？

user: user-1
content: 引用 8 楼 sholber 的回复:方法不对滴。 gcc -o test b.c a.c  另外，C中好像没有全局（global），只有外部（external） 以下，如果a是全局的，那么，在a的定义点之前应该也能使用： a ++; int a = 0; 但实际上不能。 参考8楼。 gcc命令行中必须和你的extern变量实际所在的那个.c或.cpp或.a或.so一起编译，除非是操作系统预定义变量比如errno之类的才不需要。

user: user-1
content: 引用 17 楼 sholber 的回复:[quote=引用 16 楼 zhao4zhong1 的回复:] 引用 9 楼 zhao4zhong1 的回复: a.c   public int a = 0;  b.c  extern int a;  我翻了好久的资料，也没发现C里有'public' 赵四老湿，咋回事涅？[/quote] 这是很老很老的C编译器的要求。

user: user-6
content: 引用 16 楼 zhao4zhong1 的回复:引用 9 楼 zhao4zhong1 的回复: a.c   public int a = 0;  b.c  extern int a;  我翻了好久的资料，也没发现C里有'public' 赵四老湿，咋回事涅？

user: user-1
content: 引用 9 楼 zhao4zhong1 的回复: a.c   public int a = 0;  b.c  extern int a;

user: user-8
content: C 语言有个 main 函数  //Windows 下 ，很多时候 用 WinMain 代替  main 函数 通常 所有 不包含 main 函数的.c  都只是提供一些函数， 供main 函数内部的代码是用的 被main 函数内部的代码,直接调用，或者间接调用 当然，也可以提供 外部变量， 供所有函数（任何模块定义的函数）使用。  两个 .c 程序，必须链接成为一个可可执行文件，//现在还有动态库，Windows 下的.Dll ,.linux 下的 .so 才可以 在一个  .c中使用另一个 .c 的，函数，外部变量  方法很简单  一处定义 其他地方声明为外部变量  一般 在实现文件里定义， 可以在 头文件和实现文件里,声明为外部变量