我想以輕鬆改變函數聲明使用宏函數聲明,這裏是我現在:宏不工作
#define MYDECLARATION(name) void name (void)
當我打電話MYDECLARATION(my_thread);我得到一個錯誤:
identifier-list paramters may only be used in a function definition.
我試圖用##這樣的:
#define MYDECLARATION(name) void ##name (void)
,但我敢肯定我會得到:voidmythread (void)
在我的代碼。你有什麼想法如何做到這一點?
我也很感興趣,如果你知道關於一般宏的一些很好的教程。
迴應位掩碼評論:
我使用KEIL編譯然後我的線程正在如下:
#define MYDECLARATION(name) __task void name(void)
我的電話:
MYDECLARATION(Mythread);
我的定義:
__task void Mythread(void)
{
//...
}
新的測試:
#define RET_TEST __task void
#define PARAMETER void
RET_TEST MYDECLARATION(PARAMETER);
這是工作。所以我想這是使用宏參數到未工作的函數名的事實...
你想輕鬆改變函數聲明的內容嗎?它的論據是什麼?它的返回類型?它的調用約定? ...? – Sneftel
你在宏的末尾是否缺少分號?嘗試'#define MYDECLARATION(name)void name(void);' – SheetJS
我的目標是在2個不同的體系結構之間獲得通用代碼。我的問題是線程聲明的語法。 – Joze