我的代码中有以下一行。
QDBusConnection bus = QDBusConnection::systemBus();
or
QDBusConnection bus = QDBusConnection::sessionBus();
我想在makefile中定义宏,它将启用系统总线或会话总线。 但是,我想做标记粘贴,就像那样。
在makefile中
if($(SYSTEM),Y)
#define DBUS systemBus
endif
所以,在.c文件中 -
我想做以下事情。
QDBusConnection bus = QDBusConnection::##DBUS();
我该怎么办?当我尝试进行字符串连接时,我收到错误。
答案 0 :(得分:1)
标记粘贴##
只能在宏定义的替换文本中使用。它不能在宏定义之外使用。
但无论如何也没有必要;你可以简单地用C代码写一下:
#ifndef DBUS
#define DBUS sessionBus
#endif
QDBusConnection bus = QDBusConnection::DBUS();
然后使用makefile
,安排使用:
-DDBUS=systemBus
需要时。或者您可以让makefile
始终指定sessionBus
或systemBus
之一,但在代码中(或代码使用的标头中)使用默认设置仍然是个好主意)。