我不明白为什么在预编译头文件中不使用头文件守护程序...任何想法?为什么在stdafx.h中不需要头文件?
1
A
回答
1
通常情况下,stdafx.h将作为第一个语句每个cpp文件只包含一次,通常情况下,没有其他文件会包含它。因此,递归包含stdafx.h的机会很小,因此包含守卫的“不必要”。
我仍然建议使用一个,以防万一,或可能使用文件顶部的#pragma once
。
2
因为"stdafx.h"
必须是首先包含在.cpp
文件,而不是其他地方。
1
我不知道预编译头的代码,但我想它包含一个“#pragma once”,它具有相同的效果,但只适用于VS(至少它不是标准的)。我记得向导使用这些创建了MFC文件。
3
如果你所做的只是包含其他头文件,那就没有必要。如果这些文件不能多次包含,他们将拥有自己的标头警卫。 stdafx.h
本身并不关心它被包含多少次,除非你错误地使用它。
+1
+1,好点。完全没有想到这一点。 – Xeo 2011-05-12 02:09:40
相关问题
- 1. 为什么我不需要在头文件中声明UIAlertViewDelegate?
- 2. MSVC预编译头文件:哪些文件需要#include“stdafx.h”?
- 3. MPMoviePlayerLoadStateDidChangeNotification需要什么头文件?
- 4. 使用头文件和StdAfx.h
- 5. 为什么我不需要在gcc 4.6中包含STL头文件?
- 6. 为什么我需要在同名的.c文件中包含.h头文件?
- 7. 为什么我们使用`#include“stdafx.h”`而不是`#include <stdafx.h>`?
- 8. Ruby需要'文件'不起作用,但需要'./file'。为什么?
- 9. 为什么javah需要字节码来生成JNI头文件?
- 10. 为什么在编译GCC时不需要包含我的头文件?
- 11. 为什么我不能在Ruby中需要'string.rb'文件
- 12. 为什么不需要在.h文件中声明此方法?
- 13. 为什么在Visual Studio中某些头文件需要链接库?
- 14. StdAfx.h中的“Afx”是什么?
- 15. 为什么我需要Default.aspx.designer.cs文件?
- 16. 为什么需要Boost库文件?
- 17. 为什么需要UAC更改文件?
- 18. 为什么不需要document.getElementById?
- 19. 为什么我不需要
- 20. 当类方法不需要时,为什么头文件中的独立方法需要名称空间限定?
- 21. IBAction - 为什么要在头文件中声明它们
- 22. 为什么ivars在iOS中不需要时可可需要?
- 23. 为什么MinGW不需要MSVC需要导入库(.lib)作为.dll文件?
- 24. 为什么我不需要Clojure文件中的Java库?
- 25. 为什么要从csv文件头不工作
- 26. 为什么我们在.class文件的开头需要一个幻数?
- 27. 为什么JSONP在这里不需要?
- 28. 除了头文件你需要什么来使用头中定义的函数
- 29. 有什么问题,需要在文件
- 30. 为什么需要
谢谢,+1对所有 – aCuria 2011-05-12 02:58:55