其他分享
首页 > 其他分享> > c – Qt宏关键字导致名称冲突

c – Qt宏关键字导致名称冲突

作者:互联网

我正在为我的Qt项目构建一个NCurses接口.我想使用CDK,但我认为这个结构的信号成员与Qt signals关键字冲突.

/usr/include/linux/cdk.h:411: error: expected unqualified-id before 'protected'

我怎样才能让CDK与Qt一起工作?

解决方法:

您可以定义QT_NO_KEYWORDS宏,禁用“信号”和“插槽”宏.

如果你使用QMake:

 CONFIG += no_keywords

(Qt Documentation here)

如果您正在使用另一个构建系统,请执行将-DQT_NO_KEYWORDS传递给编译器所需的任何内容.

定义QT_NO_KEYWORDS将要求您在Qt代码中将信号的出现更改为Q_SIGNALS并将插槽更改为Q_SLOTS.

如果您无法更改所有Qt代码,例如因为您使用的第三方库不是“关键字清理”,您可以尝试在包含cdk.h之前在本地取消定义“信号”:

#undef signals
#include <cdk.h>

我建议尽可能使用no_keywords,因为它不那么乏味且容易出错.

标签:ncurses,c,qt,c-preprocessor,cdk
来源: https://codeday.me/bug/20191001/1839318.html