我的代码中有以下一行。
QDBusConnection bus = QDBusConnection::systemBus();
or
QDBusConnection bus = QDBusConnection::sessionBus();
我想在 makefile 中定义宏,它将启用系统总线或会话总线。但是,我想做令牌粘贴,类似的东西。
在生成文件中
if($(SYSTEM),Y)
#define DBUS systemBus
endif
所以,在 .c 文件中 -
我想做以下几点。
QDBusConnection bus = QDBusConnection::##DBUS();
我该怎么做?当我尝试进行字符串连接时出现错误。
标记粘贴##
只能在宏定义的替换文本中使用。 它不能在宏定义之外使用。
但无论如何都没有必要;你可以简单地用C代码编写:
#ifndef DBUS
#define DBUS sessionBus
#endif
QDBusConnection bus = QDBusConnection::DBUS();
然后使用makefile
,安排调用 C 编译器:
-DDBUS=systemBus
需要时。 或者,您可以让makefile
始终指定sessionBus
或systemBus
之一,但在代码(或代码使用的标头)中设置默认值仍然是一个好主意。