gpt4 book ai didi

c++ - wxWidgets 事件表是哪种 C++ 语句?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:44 25 4
gpt4 key购买 nike

我刚开始学习wxWidgets,我遇到了一组代码,如下所示:

wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Minimal_Quit, MyFrame::OnQuit)
EVT_MENU(Minimal_About, MyFrame::OnAbout)
wxEND_EVENT_TABLE()

wxWidgets 称之为“事件表”。我想知道这是什么类型的语句,因为我已经阅读了几个 C++ 教程,但我还没有看到这样的语句。它们看起来像函数调用,但没有分号。我知道它与 MACROS 有关,但我真的不明白它是如何工作的。这种语句是MACROS的东西,还是我还没有遇到过的C++中的通用东西?

最佳答案

  1. 你是对的。 wxBEGIN_EVENT_TABLE 是一个“宏”的例子:

  2. 那么什么是“宏”?这是一个合理的定义:

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

A macro is a fragment of code which has been given a name. Whenever the name is used, it is replaced by the contents of the macro. There are two kinds of macros. They differ mostly in what they look like when they are used. Object-like macros resemble data objects when used, function-like macros resemble function calls.

  1. 在这种情况下,wxBEGIN_EVENT_TABLE , 连同 wxEND_EVENT_TABLE ,“扩展”到 wx“事件处理程序”列表:

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

    #define wxBEGIN_EVENT_TABLE   (       theClass,
baseClass
)

Use this macro in a source file to start listing static event handlers for a specific class.

Use wxEND_EVENT_TABLE() to terminate the event-declaration block.

  1. “宏”是在最早的汇编语言中引入的。他们只是做“文本替换”——修改实际编译器看到的源代码。

    宏(和宏预处理器)是原始“C”语言不可或缺的一部分,并继承到 C++(和许多其他高级语言)中。

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

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

'希望对你有帮助

关于c++ - wxWidgets 事件表是哪种 C++ 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54013356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com