我刚开始学习wxWidgets,我遇到了一组看起来像这样的代码:
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Minimal_Quit, MyFrame::OnQuit)
EVT_MENU(Minimal_About, MyFrame::OnAbout)
wxEND_EVENT_TABLE()
Run Code Online (Sandbox Code Playgroud)
wxWidgets称之为"事件表".我想知道这是什么样的陈述,因为我已经完成了几个C++教程,而且我没有看到这样的东西.它们看起来像函数调用,但没有分号.我知道它与MACROS有关,但我真的不知道它是如何工作的.这种声明是MACROS的一种说法,还是C++中的一般情况我还没有遇到过?
你是对的. wxBEGIN_EVENT_TABLE是一个"宏"的例子:
什么是"宏观"?这是一个合理的定义:
https://gcc.gnu.org/onlinedocs/cpp/Macros.html
宏是已赋予名称的代码片段.每当使用该名称时,它将被宏的内容替换.有两种宏.它们的区别主要在于它们在使用时的外观.类似对象的宏在使用时类似于数据对象,类似函数的宏类似于函数调用.
https://docs.wxwidgets.org/3.0/group__group__funcmacro__events.html#
Run Code Online (Sandbox Code Playgroud)#define wxBEGIN_EVENT_TABLE ( theClass, baseClass )在源文件中使用此宏来开始列出特定类的静态事件处理程序.
使用wxEND_EVENT_TABLE()终止事件声明块.
"宏"是以最早的汇编语言引入的.他们只是做"文本替换" - 修改实际编译器看到的源代码.
宏(和宏预处理器)是原始"C"语言不可或缺的一部分,延续到C++(以及许多其他高级语言).
您可以在此处阅读有关C/C++宏的更多信息:
https://www.programiz.com/c-programming/c-preprocessor-macros
'希望有所帮助