// 以下是巨集定義的一些用法
11.4.2 #if defined… #else …#endif此編譯指令為#ifdef … #else …#endif的等價編譯指令。其語法格式如下:
#if defined 常量表示式
**段1
#else
**段2
#endif
或#if defined (常量表示式)
**段1
#else
**段2
#endif
此編譯指令的簡單形式為單分支的條件編譯指令,其語法形式如下:
#if defined常量表示式
**段1
#endif
因為對於乙個大程式而言,我們可能要定義很多常量( 不管是放在原始檔還是標頭檔案 ),那麼我們有時考慮定義某個常量時,我們就必須返回檢查原來此常量是否定義,但這樣做很麻煩.if defined巨集正是為這種情況提供了解決方案.舉個例子,如下:#define ....
#define ....
........
........
#define a 100
.......
此時,我們要檢查a是否定義(假設我們已經記不著這點了),或者我們要給a乙個不同的值,就加入如下句子
#if defined a
#undef a
#define a 200
#endif
上述語句檢驗a是否被定義,如果被定義,則用#undef語句解除定義,並重新定義a為200
同樣,檢驗a是否定義:
#ifndef a //如果a沒有被定義
#define a 100
#endif
以上所用的巨集中:#undef為解除定義,#ifndef是if not defined的縮寫,即如果沒有定義。
這就是#if defined 的唯一作用!
#include extern lcm_driver nt35510_lcm_drv;extern lcm_driver hx8369_lcm_drv;
extern lcm_driver bm8578_lcm_drv;
extern lcm_driver nt35582_mcu_lcm_drv;
extern lcm_driver hx8357b_lcm_drv;
extern lcm_driver hx8369_dsi_lcm_drv;
extern lcm_driver hx8369_hvga_lcm_drv;
extern lcm_driver ili9481_lcm_drv;
extern lcm_driver nt35582_lcm_drv;
extern lcm_driver s6d0170_lcm_drv;
extern lcm_driver spfd5461a_lcm_drv;
extern lcm_driver ta7601_lcm_drv;
extern lcm_driver tft1p3037_lcm_drv;
extern lcm_driver zte6516_lcm_drv;
extern lcm_driver r61408_lcm_drv;
extern lcm_driver lg4572b_lcm_drv;
lcm_driver* lcm_driver_list =
;#define lcm_compile_assert(condition) lcm_compile_assert_x(condition, __line__)
#define lcm_compile_assert_x(condition, line) lcm_compile_assert_xx(condition, line)
#define lcm_compile_assert_xx(condition, line) char assertion_failed_at_line_##line[(condition)?1:-1]
unsigned int lcm_count = sizeof(lcm_driver_list)/sizeof(lcm_driver*);
lcm_compile_assert(0 != sizeof(lcm_driver_list)/sizeof(lcm_driver*));
extern lcm_driver* lcm_driver_list;extern unsigned int lcm_count;
const char str="jblcm#1#aaaa";
lcm_driver *disp_drv_get_lcm_driver(const char* lcm_name)
else
;lcm_params *lcm_params_new = &s_lcm_params_new;
lcm = lcm_driver_list[0];
memset((void*)lcm_params, 0, sizeof(lcm_params));
lcm->get_params(lcm_params);
int i;
for(i = 1;i < lcm_count;i++)}}
printf("[lcm auto detect] no lcm device found\n");
printf("[lcm auto detect] we will using the lcm driver with minimum resolution\n");
// if we are here, it means:
// 1.there is no correct driver for the lcm used;
// 2.there is no lcm device connected.
// we will find the lcm with minimum resolution to use,
// in case physical memory is not enough
// goto done;
}#else
else
else
}else
else}}
printf("[lcm auto detect] no lcm device found\n");
printf("[lcm auto detect] we will using the lcm driver with minimum resolution\n");
// if we are here, it means:
// 1.there is no correct driver for the lcm used;
// 2.there is no lcm device connected.
// we will find the lcm with minimum resolution to use,
// in case physical memory is not enough
;lcm_params *lcm_params_new = &s_lcm_params_new;
lcm = lcm_driver_list[0];
memset((void*)lcm_params, 0, sizeof(lcm_params));
lcm->get_params(lcm_params);
for(i = 1;i < lcm_count;i++)}}
} }
abs int 巨集定義 巨集定義和巨集方法
巨集定義和巨集方法 定義機型 define is iphone5 uiscreen instancesrespondtoselector selector currentmode cgsizeequaltosize cgsizemake 640,1136 uiscreen mainscreen cu...
C語言巨集定義和巨集定義函式
c語言巨集定義和巨集定義函式 巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式...
xcode 預編譯巨集定義
方法 利用預編譯 巨集定義 方案1 在pch 中定義乙個巨集 version free 來代表 免費版 方案2 targets檔案中定義乙個巨集 中 乙個版本對應乙個targets 檔案 這個檔案裡邊定義著我們應用的圖示 名字 引數 發布的時候 乙個專案按照乙個targets 檔案來發布的 ok 在...