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語言沒學好啊!