我试图将我的C++源代码从HP-UX移植到Linux时遇到此问题。当我尝试在Linux上编译C++源代码时,发生的是它抱怨组件(来自标准C++库)不存在。使用命名空间std放置该行;在源代码的顶部似乎解决了这个问题。当我尝试在HP-UX上重新编译代码时,aCC编译器会抱怨只有命名空间名称在此处有效(它不认为是有效的命名空间)。我想知道是否有办法解决此问题,以便源代码与HP-UX长期弃用的C++编译器和LINUX的GCC编译器二进制兼容。如何避免无法使用名称空间std;在C++
回答
您可以使用特定于平台的常量,如LINUX
或WIN32
来添加或不添加行using namespace std
。通常的做法是制作(或更经常地生成)config.h
文件,为您使用的平台特定的类型名称定义别名。
你应该能够做到这一点,如果你真的不想#ifdef
的:
namespace std {}
using namespace std;
也就是说,创建或扩展的std
命名空间。在Linux上,它将进行扩展,并在HP-UX上创建。无论哪种情况,using
都是有效的。
但是,如果HP-UX编译器是一样老,你说的,然后包括C++头文件的源代码很可能是老式:
#include <iostream.h>
,而不是现代风格:
#include <iostream>
如果您有解决此问题的解决方案,那么您可能在代码中的某处使用了条件编译。如果您已经将这些特定于平台的决定集中在您的代码中的单个位置,那么这将是添加代码的地方,仅为需要它的那些平台执行using namespace std
。
您可以使用预处理程序检查操作系统以及是否包含namespace std
;所以如果你的操作系统不是HP aCC,它不包括std,否则它会。像这样:
#ifndef __HP_aCC
using namespace std;
#endif
,或者如果你想检查linux和赢,如果这些OS只使用空间std;你也可以这样做:
#if defined(WIN32) || defined(LINUX)
using namespace std;
#endif
希望有所帮助!
谢谢。这有帮助。 :) – Justin
确保您包含正确的标题。 C++没有定义哪些标准头文件可能包含其他标准头文件,因此在使用间接包含文件时,实现的行为会有所不同。因此,只需确认您需要包含的所有内容都包含在中直接。
不要使用
using namespace std;
只是完全限定你使用的名称,或使用using
声明调用了你所需要的特定组件。using std::string; string s; // no need for using namespace std
- 1. 名称空间避免冲突 - 例子?
- 2. 如何避免在C#中命名空间和类的相同名称?
- 3. 如何避免在aspx页面中重复名称空间
- 4. 如何在名称空间中生成soap4r wsdl2ruby类以避免名称冲突?
- 5. JAXB:如何避免xmlns的重复名称空间定义:xsi
- 6. Node.js,如何避免事件名称空间冲突?
- 7. WCF服务在发布时使用命名空间创建一个svc文件。如何避免名称空间
- 8. 避免在Type.GetType(给予命名空间名称)
- 9. 如何避免在python中用空格拆分名称
- 10. 如何避免在新创建的XElement中获取空名称空间?
- 11. 在c#中使用名称空间#
- 12. 在C++中使用名称空间
- 13. 无法使用默认名称空间解析C#中的XML
- 14. 如何查找命名空间XML避免jQuery中的其他名称
- 15. 如何避免Juce框架和OpenCV之间的名称空间干扰问题?
- 16. 如何避免遗传算法中的无效搜索空间?
- 17. 如何避免在重用std :: stringstream变量时使用std :: stringstream.str()和std :: stringstream.clear()?
- 18. 我如何避免名称混搭?
- 19. 避免XML响应中的名称空间(标签)
- 20. 避免anyElement上重复的名称空间定义
- 21. 如何避免在Javascript中重复命名空间
- 22. 如何避免使用PHP的空白空间?
- 23. 避免Haskell命名空间污染
- 24. 使用包中的命名空间无名称空间
- 25. 如何在iOS Objective-C代码中使用名称空间?
- 26. 如何在Asp.Net c#项目中使用名称空间?
- 27. 为什么以及如何在C++中使用名称空间?
- 28. 如何在名称空间std中转发声明模板类?
- 29. 如何避免为类和它的命名空间使用相同的名称,例如Technology.Technology?
- 30. 使用名称空间语句的C++
谢谢。该程序现在与aCC和GCC二进制兼容! :) – Justin