C++ GUI Programming with Qt 4 到手,第二章开始就有说明:
signals关键字实际上是一个宏。C++预处理器会在编译程序找到他之前把它转换出成标准C++代码。
原文如下:
The signals keyword is actually a macro. The C++ preprocessor converts it into standard C++ before the compiler sees it.
可能是我对“宏”的概念理解的太狭隘,脑子里的宏只是指那些用#define定义的,因为找不到定义所以很晕。signals,slots这些宏应该是由moc来做解析的,文中的“C++预处理器”估计指的也是moc而不是通常理解的C++预处理器吧。或许可以这样理解:qt在包含qt扩展(比如那些qt专有的关键字)的源码和c++编译器之间加了一个filter,这个filter的任务就是把包含qt扩展的源码解释成标准c++代码,然后再进行通常的c++编译
理解加猜测,如果有错麻烦拍砖告知。