如何为函数调用执行令牌粘贴



我的代码中有以下一行。

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始终指定sessionBussystemBus之一,但在代码(或代码使用的标头)中设置默认值仍然是一个好主意。

最新更新