名称空间普通C头 < > C++中的命名空间标题与在/p>中包头一样简单。 namespace SomeNs { ... }
由于名称混乱,给相应的对象文件或静态库命名不是很简单 另一方面,普通C对象文件/静态库应该更容易使用名称空间,因为已经存在名称空间普通C头 < > C++中的命名空间标题与在/p>中包头一样简单。 namespace SomeNs { ... },c++,c,namespaces,C++,C,Namespaces,由于名称混乱,给相应的对象文件或静态库命名不是很简单 另一方面,普通C对象文件/静态库应该更容易使用名称空间,因为已经存在 objcopy--prefix symbols和C不会损坏符号,但是头文件的objcopy--prefix symbols对应物是什么?我认为没有。这正是您已经建议的。将名称空间声明放在每个#include周围,命名有问题的头,或者直接将其放在文件中。如果是后者,则可以用条件编译指令来保护它,以便只有在C++模式下编译时才能看到命名空间声明。后者可能更可靠,这与extern
objcopy--prefix symbols
和C
不会损坏符号,但是头文件的objcopy--prefix symbols
对应物是什么?我认为没有。这正是您已经建议的。将名称空间声明放在每个#include
周围,命名有问题的头,或者直接将其放在文件中。如果是后者,则可以用条件编译指令来保护它,以便只有在C++模式下编译时才能看到命名空间声明。后者可能更可靠,这与extern“c”
声明(您必须避免,因为它通常会抑制名称损坏)的处理方式相同。请参阅:@Toby谢谢,但我真的想要一个自动化/自动化的解决方案。我是个白痴。当然,这种方法是可以自动化的;D我只是从相应的对象文件(使用nm
)而不是从头文件(不知道如何做)中获取重定义的符号。我认为没有。这正是您所建议的。将名称空间声明放在每个#include
周围,命名有问题的头,或者直接将其放在文件中。如果是后者,则可以用条件编译指令来保护它,以便只有在C++模式下编译时才能看到命名空间声明。后者可能更可靠,这与extern“c”
声明(您必须避免,因为它通常会抑制名称损坏)的处理方式相同。请参阅:@Toby谢谢,但我真的想要一个自动化/自动化的解决方案。我是个白痴。当然,这种方法是可以自动化的;D我只是从相应的对象文件(使用nm
)而不是头文件(不知道如何做)中获取重定义的符号。