2014-01-31 37 views
1

我在C++ 11模式下编译应用程序时出现问题,只需在dbus库的头文件中添加一个空白字符即可解决问题。是否可以向系统库头添加一个空格?

如果我这样做 - 当我尝试构建的库(使用空白头文件)尝试链接到dbus(在头文件中没有空白的情况下构建)时,它是否会破坏?

特别地,DBUS-protocol.h包含此行:

#define DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE "<!DOCTYPE node PUBLIC \""DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER"\"\n\""DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER"\">\n" 

其中,在C successfuly编译++ 11模式空白必须被插入如:

...PUBLIC \"" DBUS_INTROSPECT... 

多少我们真的可以在不破坏兼容性的情况下更改头文件吗? (我知道qt ABI兼容性指南,但我不认为它解决了我的特定问题)

+2

这很难说。我通常会认为在头文件中添加一个空格将不会执行任何操作,但是您说它可以解决您的问题。发布代码(在您更改之前和更改之后),然后我们会理解您要求达到足够好的级别,以便能够回答。另外,你的问题被标记为linux和dll。在linux下没有dll。 – utnapistim

+0

现在添加行 – Zeks

+0

编辑之后,是的,在C++ 11中需要空白,并且不会破坏任何东西。 – Simple

回答

1

这看起来像该标题中的错误。除了一些真正的病态情况,添加空白不会导致不兼容,除了避免某些编译器的错误。

我假设DBUS_ ...标识符扩展为一个引号分隔的字符串,然后该字符串应该自动与该宏的其余部分进行协调。这是一个非常安全的假设。

+0

据我所知,这在更高版本的dbus中得到修复,但我不想深入手动重新安装库,如果可以简单地插入空白并完成它:) – Zeks

相关问题