什么样的C++语句是wxWidgets事件表?

Emm*_*uel 4 c++

我刚开始学习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++中的一般情况我还没有遇到过?

pau*_*sm4 6

  1. 你是对的. wxBEGIN_EVENT_TABLE是一个"宏"的例子:

  2. 什么是"宏观"?这是一个合理的定义:

https://gcc.gnu.org/onlinedocs/cpp/Macros.html

宏是已赋予名称的代码片段.每当使用该名称时,它将被宏的内容替换.有两种宏.它们的区别主要在于它们在使用时的外观.类似对象的宏在使用时类似于数据对象,类似函数的宏类似于函数调用.

  1. 在这种情况下,wxBEGIN_EVENT_TABLEwxEND_EVENT_TABLE一起"扩展"为wx"事件处理程序"列表:

https://docs.wxwidgets.org/3.0/group__group__funcmacro__events.html#

    #define wxBEGIN_EVENT_TABLE   (       theClass,
          baseClass 
  )       
Run Code Online (Sandbox Code Playgroud)

在源文件中使用此宏来开始列出特定类的静态事件处理程序.

使用wxEND_EVENT_TABLE()终止事件声明块.

  1. "宏"是以最早的汇编语言引入的.他们只是做"文本替换" - 修改实际编译器看到的源代码.

    宏(和宏预处理器)是原始"C"语言不可或缺的一部分,延续到C++(以及许多其他高级语言).

    您可以在此处阅读有关C/C++宏的更多信息:

    https://www.programiz.com/c-programming/c-preprocessor-macros

'希望有所帮助