C++ 是否可以在系统库标题中添加空白?

C++ 是否可以在系统库标题中添加空白?,c++,linux,shared-libraries,C++,Linux,Shared Libraries,我在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

我在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"
在不破坏兼容性的情况下,我们到底可以在头文件中更改多少内容?
(我知道qt ABI兼容性指南,但我认为它没有解决我的特定问题)

这看起来像是该标题中的一个bug。除非出现一些真正的病态情况,否则在那里添加空白不会导致不兼容,除了避免某些编译器上的错误


我假设
DBUS
。。。标识符扩展为引号分隔的字符串,然后该字符串将自动与该宏的其余部分关联。这是一个相当安全的假设。

很难说。我通常认为在头文件中添加空白不会起任何作用,但您说它解决了您的问题。张贴代码(变更前和变更后),然后我们将理解您的要求,并达到足够好的水平,以便能够回答。另外,您的问题被标记为linux和dll。linux下没有DLL。编辑后,是的,C++11中需要空白,不会破坏任何内容。为什么需要空白?@TomásBadan,因为
DBUS\u INTROSPECT
被解释为用户定义的文本,甚至被预处理器解释为用户定义的文本。@Simple Thank,我会做一个深入的研究。据我所知,这在以后的DBUS版本中是固定的,但是如果可以简单地插入空白并使用它,我不想深入研究手动重新安装库:)
...PUBLIC \"" DBUS_INTROSPECT...