C语言 编译、链接、全局变量

举例:有main.c 、func1.c、func2.c(main函数在main.c中,其他两个源文件没有main函数)
以gcc编译来说:(不考虑其他编译和链接情况)
编译:gcc -c main.c -o main.o 
   	   gcc -c func1.c  -o func1.o
	   gcc -c func2.c  -o func2.o
链接:gcc main.o func1.o func2.o -o test  // 生成test可执行文件
   	如果是在集成开发环境,例如vc、devc++、codebloker等。就在软件相关工程属性里勾选上或增加源文件就行。(工具屏蔽了编译链接技术细节)
全局变量 方法1:
====================================================================
main.c
#include <stdio.h>
extern char a;
void func2();
int main()
{
    printf ("%c\n",a);
    printf ("%d\n",a);
    func2();
    printf ("%c\n",a);
    printf ("%d\n",a);
    return 0;
}
=================================================================
func1.c
char a='A';
=================================================================
func2.c
#include <stdio.h>
extern char a;
void func2()
{
    a+=1;
}
========================================================================
func1.c对全局变量a进行声明、定义,当其他源文件要使用a时,需要在函数前用extern char a 进行声明
在使用其他源文件中的函数func2()时,也要先声明再使用。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 全局变量 方法2:
======================================================================
head.h
#ifndef HEAD_H
#define HEAD_H
#include <stdio.h>
extern char a;
void func2();

#endif
========================================================================
 main.c
#include "head.h"
int main()
{
    printf ("%c\n",a);
    printf ("%d\n",a);
    func2();
    printf ("%c\n",a);
    printf ("%d\n",a);
    return 0;
}
==================================================================
func1.c
char a='A';
======================================================================
func2.c
#include "head.h"
void func2()
{
    a+=1;
}
=====================================================================
 全局变量a在源文件func1.c中声明、定义,函数func2()在func2.c声明、定义,a 和func2()都加入head.h头文件中,并在要使用到a和func2()的源文件前面添加head.h,就不用在源文件中声明了(注意如果A文件要用B文件的结构体。那么必须把结构体放到头文件里,两个源文件都include“头文件”)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值