请教C语言中if语句和预编译#if语句的区别以及#if 0的意思

我知道#if #endif是预处理的意思 但是在功能上有区别么 我觉得都是判断后面的条件 符合的话进行跟着的程序段 另外问个问题 我看的一个程序里有条语句是#if 0 这是什么意思呢 只有一个0 是要判断什么东西为0呢?

简单点说#if后面的条件如果为真那么#if和#endif之间的代码被编译到最终代码中,如果为假,则这部分代码不进行编译,相当于无用;而if语句后面的代码是永远被编译的最终代码中的,只是根据后面的语句来判断下面的代码是否执行。#if 0 就是说#if后面的条件为假,下面的代码不进行编译,多用于调试程序用,调试时,将0改为1,编译后,代码被包含,调试完成后,这部分代码无用,将1改成0,在最终程序中去掉这部分代码。追问

感谢你回答哈 你说“#if 0 就是说#if后面的条件为假,下面的代码不进行编译” 可是#if 0后面没有跟条件啊 直接就跟函数了 附上程序部分代码:
...
sprintf(buffer, "按\"退出\"键关机");
gtk_label_set_text(GTK_LABEL(mainlabel), buffer);
}
}

#if 0
int set_local_shutdown_time()
{
struCONFIG struConfig;
int value;
struct tm *tm_ptr;
time_t today;

...

追答

#if 0,0就是条件的结果啊,就是条件为“假”。

追问

这个。。可能我比较笨。。。 0是条件的结果 条件为假 可是条件是什么呢 只有一个0啊 比如程序如果是if XX=0 ,我能理解是如果条件XX为假

追答

通常情况下if后面跟的是逻辑表达式,if判断的是逻辑表达式的值,逻辑表达式的值的结果就是真或假,简单点说,真就是1,假就是0(当然这不太严谨,你可以先这样理解)。例如,x=3如果进行判断if(x==3)相当于if 1,如果此时x=5,判断if(x==3)相当于if 0,因为此时x==3这个条件为假。不知你清楚没。
#if 0语法理解和if相同,是用在编译时的。决定后面的代码是否包含在最终代码中。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-07
这个是为了编码的方便,有时候编码的时候某段代码需要,就加上个#if 1,如果突然不想要了,就把1改成0。起到了一个注释的作用而已,就是这样~本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网