2012-12-11 115 views
2

我需要通過一些結構作爲函數參數這樣C,傳遞結構作爲參數

void myFunc(unsigned char c); 

我將使用myFunc(4)myFunc(8)左右。

現在函數接受一個結構參數,所以我試圖

typedef struct { 
    unsigned char address; 
    unsigned char command; 
    unsigned char group; 
    unsigned char response; 
    unsigned char flags1; 
    unsigned char flags2; 
}test_t; 

void myFunc(test_t test); 

myFucn({0,0,0,0,0}); // but this gives me error 

如何傳遞常量結構作爲參數,而不具有第一實例? 就像myFunc(4)作爲unsigned char。

感謝

+0

但myFunc *不接受結構作爲參數? – djechlin

回答

8

在C99中,你可以使用一個compound literal

myFunc((test_t) { 0, 0, 0, 0, 0 }); 

當然,由於結構正在按值傳遞,如果你認爲這是不要緊「常量「 或不;無論功能如何,對外都無所謂。

在以前的C版本中,你不能這樣做。

+1

嗯...語法錯誤,我發現我的編譯器是ANSI 89「全功能」 – user1797147

+0

非常感謝 – user1797147