| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 436 人关注过本帖
标题:条件编译请指教
只看楼主 加入收藏
开到荼蘼
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-5-29
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:6 
条件编译请指教
在此函数之前定义了条件编译函数中的变量且为全局变量,但未赋初值!
#if defined (O_INIT_GLOBAL_DATA)
 void FunctionDef gf_init_global_data (void)
{
    bDone_gf_open_device = FALSE;
    bDone_gf_init_device = FALSE;
    bDone_gf_close_device = FALSE;
    bDone_gf_mvb_init = FALSE;
    bDone_gf_mvb_start = FALSE;
    bDone_lp_init = FALSE;
    bDone_am_init = FALSE;
    bDone_am_announce_device = FALSE;
    bDone_dsw_init = FALSE;
    bDone_ba_init = FALSE;
}
#endif
在此函数的下面接着有个函数,函数中有语句应用了if(bStartUpServerDone == FALSE),我的问题是,在定义全局变量的时候并未赋初值,但在条件编译的函数中给这些全局变量赋了初值,那么在下面的函数中,如果未调用函数void FunctionDef gf_init_global_data (void)的话,那么这些全局变量是否已有初值,可以直接使用其中的变量,而不是要调用函数才能用这些赋了值的变量!求请教,如果我说的有些不清楚,请指出!谢谢!!!!!
搜索更多相关主题的帖子: 条件 void 
2012-08-01 09:31
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
条件编译决定哪些代码编译 哪些代码不编译

要是条件编译的条件符合 代码编译了 自然也就赋值了 如果不符合 代码都不出现在程序里
2012-08-01 10:14
开到荼蘼
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-5-29
收藏
得分:0 
回复 2楼 zklhp
谢谢,但是在条件编译中定义了一个函数,条件编译是成功的,那么意味着我下面的函数不调用条件编译中的函数,条件编译中的函数也会执行吗?而且能执行的话,为何还要应用一个函数,直接在条件编译中对变量赋初值不一样吗?
2012-08-01 10:58
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
这是两个事

一个是 如果条件编译条件满足 代码会被编译进最终的程序里

一个是 函数调用时它的代码会被执行

那 你这里 只有 条件编译条件满足 而且 调用了条件编译里面的函数 函数才执行 缺一不可
2012-08-01 11:02
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
絮叨一下就是 如果条件编译不满足 没这函数 调用的话编译的时候就出错了 如果条件编译满足而没调用这个函数 其中的代码也不会执行 因为没调用

除了main()是C运行时调用的 其他的都得是编程者想让它执行它才执行
2012-08-01 11:04
开到荼蘼
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-5-29
收藏
得分:0 
回复 5楼 zklhp
所以这就是我看程序时出现的问题,我的程序里,条件编译是满足的,但在函数中未调用条件编译中的这个函数,然后之前定义的全局变量也没有赋初值,但接下来的语句用了
if(bInitServerDone == FALSE),{。。。语句}  那这个程序不是有问题吗?根本执行不了
2012-08-01 11:27
Jackie_9692
Rank: 2
等 级:论坛游民
帖 子:11
专家分:18
注 册:2012-7-21
收藏
得分:10 
条件编译,决定代码是否写进最终的目标文件。在条件编译时,编译过的代码才是最终有效代码。你在条件编译中给变量赋值,若没编译,当然变量都未初始化,编译器可能会给他赋值(值不确定),bool类型的话,很容易条件判断时,自动转化为true值.个人见解,楼主讲得很清楚了
2012-08-01 11:31
快速回复:条件编译请指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011932 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved