C编辑中的自动定义......为什么?

时间:2008-09-01 09:38:47

标签: c eclipse header-files c-preprocessor include-guards

Eclipse 在C项目中创建新文件( .c .h 文件)时,编辑器始终会自动创建{{ 1}}在文件的顶部如下:如果文件名为'myCFile.c',文件的开头会有#define,如下所示

#define

我见过其他编辑也这样做(我认为Codewright和SlikEdit)。 #ifndef MYCFILE_C_ #define MYCFILE_C_ 似乎没有为编辑器做任何事情,因为我可以毫无问题地删除它们,我想不出想要使用它们的原因。有谁知道他们为什么在那里?

4 个答案:

答案 0 :(得分:4)

这是为了防范multiple definitions

答案 1 :(得分:2)

有时人们在其他.c文件(甚至.h文件)中包含一个完整的.c文件,因此它具有完全相同的目的,即防止包含文件被多次包含并且编译器吐出多个定义错误。

但奇怪的是,除了.h文件之外,将它放在除了.h文件之外的任何东西都是编辑器的默认行为。这将是一个很少需要的功能。

答案 2 :(得分:1)

更现代的版本是使用:

#pragma once

在.c文件中看到这一点是很不寻常的,通常它只在头文件中。

答案 3 :(得分:0)

我认为这是C包含问题的回归,其中包含多个源代码副本 - 除非您对包含链一丝不苟(一个文件包含n个其他文件)。 检查是否定义了符号,并且仅在符号被定义时包括 - 这是一种方法。