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

来源:互联网 发布:访客网络怎么隐藏 编辑:程序博客网 时间:2024/05/22 03:30
举例:有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