[英]Is it possible to make a macro to reflect a C++ function declaration? And how?
[英]c++ make macro, how to make compile time function generate
這是示例,使用 cpp14
在編譯時注冊函數后,我們希望生成代碼,以便在特定函數中執行注冊的函數后可以執行它們。
struct Data
{
DECLARE_DATA(Banana);
DECLARE_DATA(Apple);
DECLARE_DATA(Orange);
...
};
struct Data
{
int Banana;
int GetBanana() { return Banana; }
int SetBanana() { // set Banana }
int Apple;
int GetApple() { return Apple; }
int SetApple() { // set Apple; }
int Orange;
int GetOrange() { return Orange; }
int SetOrange() { // set Orange; }
...
bool Load()
{
SetBanana();
SetApple();
SetOrange();
...
}
};
請幫我....
#define DECLARE_DATA(name, value) int name; \
int Get##name() { return name; } \
int Set##name() { name = value; }
看起來它有效。
DECLARE_DATA(Data1, 1);
DECLARE_DATA(Data2, 2);
DECLARE_DATA(Data3, 3);
這是`gcc -E'的輸出:
# 1 "t.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "t.c"
int Data1; int GetData1() { return Data1; } int SetData1() { Data1 = 1; };
int Data2; int GetData2() { return Data2; } int SetData2() { Data2 = 2; };
int Data3; int GetData3() { return Data3; } int SetData3() { Data3 = 3; };
但是,如果您需要在另一個地方一起調用所有這些 setter,最好使用腳本,而不是嘗試使用宏來完成此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.