Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
名称空间普通C头 < > C++中的命名空间标题与在/p>中包头一样简单。 namespace SomeNs { ... }_C++_C_Namespaces - Fatal编程技术网

名称空间普通C头 < > C++中的命名空间标题与在/p>中包头一样简单。 namespace SomeNs { ... }

名称空间普通C头 < > C++中的命名空间标题与在/p>中包头一样简单。 namespace SomeNs { ... },c++,c,namespaces,C++,C,Namespaces,由于名称混乱,给相应的对象文件或静态库命名不是很简单 另一方面,普通C对象文件/静态库应该更容易使用名称空间,因为已经存在 objcopy--prefix symbols和C不会损坏符号,但是头文件的objcopy--prefix symbols对应物是什么?我认为没有。这正是您已经建议的。将名称空间声明放在每个#include周围,命名有问题的头,或者直接将其放在文件中。如果是后者,则可以用条件编译指令来保护它,以便只有在C++模式下编译时才能看到命名空间声明。后者可能更可靠,这与extern

由于名称混乱,给相应的对象文件或静态库命名不是很简单

另一方面,普通C对象文件/静态库应该更容易使用名称空间,因为已经存在
objcopy--prefix symbols
C
不会损坏符号,但是头文件的
objcopy--prefix symbols
对应物是什么?

我认为没有。这正是您已经建议的。将名称空间声明放在每个
#include
周围,命名有问题的头,或者直接将其放在文件中。如果是后者,则可以用条件编译指令来保护它,以便只有在C++模式下编译时才能看到命名空间声明。后者可能更可靠,这与
extern“c”
声明(您必须避免,因为它通常会抑制名称损坏)的处理方式相同。请参阅:@Toby谢谢,但我真的想要一个自动化/自动化的解决方案。我是个白痴。当然,这种方法是可以自动化的;D我只是从相应的对象文件(使用
nm
)而不是从头文件(不知道如何做)中获取重定义的符号。我认为没有。这正是您所建议的。将名称空间声明放在每个
#include
周围,命名有问题的头,或者直接将其放在文件中。如果是后者,则可以用条件编译指令来保护它,以便只有在C++模式下编译时才能看到命名空间声明。后者可能更可靠,这与
extern“c”
声明(您必须避免,因为它通常会抑制名称损坏)的处理方式相同。请参阅:@Toby谢谢,但我真的想要一个自动化/自动化的解决方案。我是个白痴。当然,这种方法是可以自动化的;D我只是从相应的对象文件(使用
nm
)而不是头文件(不知道如何做)中获取重定义的符号。