簡體   English   中英

如何在lua中使用宏

[英]How to use macro in lua

正在尋找現在很少的線程在lua,發現這篇文章非常有趣:

lua函數的警報消息

我試圖對我的代碼使用相同的宏,並對操作進行一些更改:

#define GET_INTEGER_WARN(ind, fld) do { \
lua_getfield(L, ind, #fld); \
p->##fld = lua_tointeger(L, -1); \
\
if (!lua_isinteger(L, -1)) \
    printf(#fld" allows only numbers;"); \
} while (0)

我的代碼:

lua_getfield(L, -1, "wooxy_value"); 
p->wooxy_value = lua_tointeger(L, -1);

lua_getfield(L, -2, "wooxy_type"); 
p->wooxy_type = lua_tointeger(L, -1);

我在作者解釋時改變了我的代碼,因此:

GET_INTEGER_WARN(-1, "wooxy_value");  
GET_INTEGER_WARN(-2, "wooxy_type"); 

在以下位置發生更多宏錯誤:

p->##fld = lua_tointeger(L, -1); \

編譯error c2059 syntax error 'string'error c2059 syntax error 'string'

我做了一個測試並用p->wooxy_value替換了函數p->##fld並且它有效。

更多這種方式只適用於一個函數,任何人都可以告訴我這個宏有什么問題嗎? 即使使用整數值,該消息也會出現。

使用字符串文字毫無意義:

GET_INTEGER_WARN(-1, "wooxy_value"); 

結果是

p->"wooxy_value" = lua_tointeger(L, -1);

刪除引號:

GET_INTEGER_WARN(-1, wooxy_value);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM