我不明白爲什麼在預編譯頭文件中不使用頭文件守護程序...任何想法?爲什麼在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