#include int fun1(void)
int fun2(void)
#define get_fun(id) fun##id
int main(int argc,char **ar**)
此時有列印fun1
這就是類似get_fun(1)();===fun1();
左值繼續測試
#include int fun1(void)
int fun2(void)
int t1(void)
#define get_fun(name,id) name##id
int main(int argc,char **ar**)
輸出t1看到就是字串拼接不需要#字串化
實戰1
//通過id獲得全部結構體 以小博大
gk_usartbase_type * gk_usart_read_obj( uint8_t usartid)
}**********************不行
#define get_string(name,id) name##id
//通過id獲得全部結構體 以小博大
gk_usartbase_type * gk_usart_read_obj( uint8_t usartid)
..\gmodes\gbaseusart\gkbaseusart.c(108): error: #20: identifier "gkuusartid" is undefined
+++++++++++++++++++可以 但是沒啥用
#define get_string(name,id) name##id
//通過id獲得全部結構體 以小博大
gk_usartbase_type * gk_usart_read_obj( uint8_t usartid)
}
MT測試和ST測試的區別
mt測試是測試函式的正確性,包括測試函式的邊界,邏輯正確性以及函式功能實現的完整與否。st測試是測試功能實現的正確性,設計的正確性以及合理性。總的來說,st測試要比mt測試更上一層的測試,如果說mt測的是零件製造是否合格,那麼mt就是測試零件組合得是否正確,是否合理。st測試階段發現的bug數以及b...
C 中的左值右值
對於 c 中的左值和右值,我們通常的說法是 當乙個物件被用作右值的時候,用的是物件的值 內容 當物件被用作左值的時候,用的是物件的身份 在記憶體中的位置 這句話來自於 c primer 第五版 第 121 頁,那麼,對於這句話,該作何理解呢?下面我想來談談我的看法 iso c 03規定表示式必須是左...
左值與右值的關係
左值是持續時間長,針對位址進行操作的,操作符為 右值持續時間短,主要針對暫存器操作的,操作符為 有時候為了提公升系統的效能,對物件進行移動操作,但是不要對其進行內容的複製或者記憶體的操作,那麼就用右值,有一根函式包含在標頭檔案中的std move 可以將左值轉為右值 1 主要是練習了左值和右值的用法...