
C语言预编译处理的嵌套使用,不太明白,求助!
老美写的程序,c语言,用了很多预处理命令,并且还用到了预处理的嵌套,绕来绕去迷糊了,请高手解释一下,谢谢!问题1、通常#ifdef……#else……#endif这种结构好...
老美写的程序,c语言,用了很多预处理命令,并且还用到了预处理的嵌套,绕来绕去迷糊了,请高手解释一下,谢谢!
问题1、通常#ifdef……#else……#endif这种结构好懂,但是像
#ifdef……(1)
#else……(2)
#ifdef……(3)
#else……(4)
#endif(5)
#endif(6)
这种结构,是和c语言里if……esle……语句的嵌套一样的吗???还是说不管是不是嵌套,只要#ifdef后面定义过的,就编译,否则不编译?比如说上面假如第(1)行和第(3)行#ifdef后面的内容在之前有定义,那么对第(1)行#ifdef和第(2)行的#else之间的语句进行编译,现在第(3)行#ifdef后面的内容也是定义过的,那么现在对第(3)行#ifdef和第(4)行#else之间的语句编译吗???
问题2、#if……#elif……#elif……#endif这种结构好懂,我想问的是,有没有#ifdef……#elif……#endif这种用法,我所知道的#elif应该是与#if搭配使用的,没见过#elif跟#ifdef搭配过啊??但是老美的这个程序里面确实用到了,请解释这种用法是什么意思,谢谢!
问题3、可不可能存在这种结构?我真的晕掉了
#ifdef……
#ifndef……
#else……
#else……
#endif
#endif
回答是肯定的??到底编译还是不编译请说清楚,看清楚我问题(1)的几问,我哪里知道肯定的倒是指的是那一种情况?? 展开
问题1、通常#ifdef……#else……#endif这种结构好懂,但是像
#ifdef……(1)
#else……(2)
#ifdef……(3)
#else……(4)
#endif(5)
#endif(6)
这种结构,是和c语言里if……esle……语句的嵌套一样的吗???还是说不管是不是嵌套,只要#ifdef后面定义过的,就编译,否则不编译?比如说上面假如第(1)行和第(3)行#ifdef后面的内容在之前有定义,那么对第(1)行#ifdef和第(2)行的#else之间的语句进行编译,现在第(3)行#ifdef后面的内容也是定义过的,那么现在对第(3)行#ifdef和第(4)行#else之间的语句编译吗???
问题2、#if……#elif……#elif……#endif这种结构好懂,我想问的是,有没有#ifdef……#elif……#endif这种用法,我所知道的#elif应该是与#if搭配使用的,没见过#elif跟#ifdef搭配过啊??但是老美的这个程序里面确实用到了,请解释这种用法是什么意思,谢谢!
问题3、可不可能存在这种结构?我真的晕掉了
#ifdef……
#ifndef……
#else……
#else……
#endif
#endif
回答是肯定的??到底编译还是不编译请说清楚,看清楚我问题(1)的几问,我哪里知道肯定的倒是指的是那一种情况?? 展开
展开全部
这种结果基本上和C语言里面的if else 语句一样的
第一个问题,你的回答是肯定的。
第二个问题,#ifdef 是判断一个宏是否已经定义,比如#ifdef XXXXX
就是说如果前面定义了XXXXX,那么这个#ifdef的条件就是真。#if 语句是判断#if后面的条件是不是真 比如说 #if 0,那#if的条件为假,#if 1 #if的条件为真。两个的实质是一眼的,都是判断后面的条件是否为真。
第三个问题,是可以存在这样的结构的。
第一个问题,你的回答是肯定的。
第二个问题,#ifdef 是判断一个宏是否已经定义,比如#ifdef XXXXX
就是说如果前面定义了XXXXX,那么这个#ifdef的条件就是真。#if 语句是判断#if后面的条件是不是真 比如说 #if 0,那#if的条件为假,#if 1 #if的条件为真。两个的实质是一眼的,都是判断后面的条件是否为真。
第三个问题,是可以存在这样的结构的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询