我学过C,现在我决定改用C++。因此,在C中,我在头文件中使用了#ifndef#endif。我应该在C++中使用相同的命令吗?或者有其他选择吗?
#ifndef
#endif
mwngjboj1#
是的,预处理器的工作方式 (大部分) 相同,所以你仍然应该使用预处理器指令来防止多次包含相同的代码。C和C++中预处理器之间的任何功能差异都可能是边缘情况,不太可能与您当前的学习水平相关。
shyt4zoc2#
文件/头的关系在C和C++中是相同的。foo.h:
#ifndef SOME_UNIQUE_NAME_HERE #define SOME_UNIQUE_NAME_HERE // your declarations (and certain types of definitions) here #endif
C++的预处理器与C的预处理器基本相同。所有指令都可以在两种语言中工作,无论是写在头文件(.h)还是源文件(.c、.cc、.cpp)中。Read more about the wonders of headers here!
fzwojiic3#
Commader_Quazar的答案是正确的,也是足够的。或者,您可以替换:
其中:
#pragma once // your declarations (and certain types of definitions) here
它可以让你写1行代码而不是3行,并且不太容易出错(因为在这种情况下,你不必担心记住把#endif放在文件的末尾),但是我个人更喜欢第一个选项。
3条答案
按热度按时间mwngjboj1#
是的,预处理器的工作方式 (大部分) 相同,所以你仍然应该使用预处理器指令来防止多次包含相同的代码。
C和C++中预处理器之间的任何功能差异都可能是边缘情况,不太可能与您当前的学习水平相关。
shyt4zoc2#
文件/头的关系在C和C++中是相同的。
foo.h:
C++的预处理器与C的预处理器基本相同。所有指令都可以在两种语言中工作,无论是写在头文件(.h)还是源文件(.c、.cc、.cpp)中。
Read more about the wonders of headers here!
fzwojiic3#
Commader_Quazar的答案是正确的,也是足够的。
或者,您可以替换:
其中:
它可以让你写1行代码而不是3行,并且不太容易出错(因为在这种情况下,你不必担心记住把
#endif
放在文件的末尾),但是我个人更喜欢第一个选项。