1.C语言中两个宏进行大小对比,其中一个没有定义,这种行为如何定义呢?
在学习U-boot的过程中遇到这么一个定义:
# if (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE) && \
(CONFIG_ENV_ADDR + CONFIG_ENV_SIZE) <= \
(CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
# define ENV_IS_EMBEDDED
# endif
我这里主要看CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE
CONFIG_ENV_ADDR这个宏确实是有定义的,但是CONFIG_SYS_MONITOR_BASE我确实没有定义的,在u-boot最后生成的include/autoconf.mk中也没有查看到这个宏的值,说明这个宏确确实实真没有。
然后我们自己手动写一个代码
1 #include
2
3 #define CONFIG_ENV_ADDR 100
4 int main(int argc, char *argv[])
5 {
6 # if (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE)
7 printf(">=\n");
8 #else
9 printf("==\n");
10 #endif
11 return 0;
12 }
13
14
gcc -E tesr.c -o test_1.c
预处理后查看到的结果是
840 int main(int argc, char *argv[])
841 {
842
843 printf(">=\n");
844
845
846
847 return 0;
848 }
请问有大神知道相关点吗?C语言没学好啊!