我遇到了类似这样的声明(根据 NDA 更改了名称):
class Foo
{
int bar;
public:
explicit Foo (Fu *parent = NULL);
private:
void somefunc (String);
signals: // ??? what does this do ???
void windowClosed();
};
这是由 g++ 4.4.7(大约从 2012 年开始)成功编译的。此外,vim 将其识别为类似于 public
和 private
的关键字,并以棕色高亮显示它们。 (Dis)同样,vim用绿色高亮关键字namespace
, class
, void
, int
, double
、float
、char
、unsigned
等
Stackoverflow 代码格式化程序不会像public
和private
那样突出显示上面的signals
!
事实证明,谷歌很难做到这一点(很多噪音),但我没有发现任何提及它的东西,甚至没有在 SO 上。我还查看了 enhancements section g++ 文档。
这个代码库很大(超过 23 万行),比较陈旧(~1998 年),并且有明显的口音。例如,同一个类定义在两个成员函数之前有类访问 private slots:
。所以可能存在一些 #define
混淆或欺骗,但我无法使用 grep
找到它。可能 g++ 已被更改,但它的 --version
输出不表示修改。
最佳答案
它不是关键字,如果您使用的是诸如 Qt 之类的框架,它会将“关键字”添加到语言中以提供不属于标准的附加功能。
例如,在 Qt 中,此代码由 MOC(元对象编译器)预处理,signals
在 qobjectdefs.h
中定义为 #define signals public
,moc 检查这个宏以添加元代码并提供实际的信号槽功能,生成的代码被放入一个名为“moc_myClass.cpp”的文件中。
关于c++ - c++ 类访问关键字 "signals"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397517/