使用makefile和不使用makefile时,容易犯的一个错误。

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

这个问题主要是关于全局变量的值在两种方式下处理的不同的问题。

如下小程序:

/***************************************/

#include <stdio.h>

static char *head;

void change(char *);

/*********************************/

int

main(void)

{

char name[] = "XiongBin Xiong.\n";

char *p;

p = name;

head = p;

printf("main()_1:%s",head);

change(p);

printf("main()_2:%s",head);

exit(0);

}

/**************************************/

void

change(char *ptr)

{

char *q;

q = ptr;

q = q + 5;

head = q;

printf("change():%s",head);

}

/***************************************/

直接gcc编译,运行,输出结果为:

main()_1:XiongBin Xiong.

change():Bin Xiong.

main()_2:Bin Xiong.

当按照文中标示分为3个文件ourh.h,main.c,change.c使用make进行编译,运行,输出结果为:

main()_1:XiongBin Xiong.

change():Bin Xiong.

main()_2:XiongBin Xiong.

两者输出结果是不一样的。

我现在的认为是,分开编译时,对于一个函数中全局变量的改变不能引起其他函数中该变量的值的变化。但到底里头是怎么一回事,到底有什么规则呢?我还不知道/。

有待学习。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航