所以我要清理别人写的一些代码,偶然发现一些我不完全理解的标头相关定义。
例如,根据我的经验,在定义我自己的头文件时,以下始终是首选语法...
#ifndef SOMEFILE_H
#define SOMEFILE_H
但是,当我浏览这段代码时,我看到的东西有些相似,但是却截然不同...
#ifndef INCLUDED_SOMEFILE_H
#define INCLUDED_SOMEFILE_H
包含部分有什么作用?程序员在什么情况下想使用更高的格式?
答案 0 :(得分:1)
包含部分有什么用途?
它有助于避免名称冲突。这些包含防护中使用的标识符没有什么不可思议的。您需要的是一致性。要求基本上是:
#ifndef
和#define
使用相同的标识符。#endif
行上使用注释)。第一个要求是您(可能)困惑的来源。您可能以为标识符必须是全部大写的文件名,并用下划线代替句点。不是这样绝对可以使任何标识符起作用。您甚至可以使用类似的
#ifndef I_LIKE_SEE_PLUS
#define I_LIKE_SEE_PLUS
但是不推荐,因为它会引起程序员的困惑(强调那些回答此问题的人)。
第二个要求大概是有人在您查看的代码中使用“ INCLUDED_
”的原因。该编码器可能在命名约定下工作,在该命名约定中,每个包含保护标识都以“ INCLUDED_
”开头,而没有其他标识以该标识开头。根据该约定,几乎没有在其他地方意外使用包含保护标识的可能性。
话虽这么说,但这种惯例可能是过大的。一种更简单且通常有效的约定是指定包含保护标识符的结尾:“ _H
”或“ _HPP
”或您的文件命名约定指定的任何约定。相比过大的杀伤力,更可能是偶然违反了这一约定,但仍然不是很可能。
程序员在什么情况下想使用更高的格式?
为您的项目选择一个约定并坚持下去。使用对您(和您的团队,如果有的话)有用的东西。