測試 define的左值 就是string的拼接

2021-09-26 15:21:52 字數 1092 閱讀 6648

#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 主要是練習了左值和右值的用法...