当 Eclipse 在C项目中创建新文件( .c 或 .h 文件)时,编辑器始终会自动创建{{ 1}}在文件的顶部如下:如果文件名为'myCFile.c',文件的开头会有#define
,如下所示
#define
我见过其他编辑也这样做(我认为Codewright和SlikEdit)。
#ifndef MYCFILE_C_
#define MYCFILE_C_
似乎没有为编辑器做任何事情,因为我可以毫无问题地删除它们,我想不出我想要使用它们的原因。有谁知道他们为什么在那里?
答案 0 :(得分:4)
这是为了防范multiple definitions。
答案 1 :(得分:2)
有时人们在其他.c文件(甚至.h文件)中包含一个完整的.c文件,因此它具有完全相同的目的,即防止包含文件被多次包含并且编译器吐出多个定义错误。
但奇怪的是,除了.h文件之外,将它放在除了.h文件之外的任何东西都是编辑器的默认行为。这将是一个很少需要的功能。
答案 2 :(得分:1)
更现代的版本是使用:
#pragma once
在.c文件中看到这一点是很不寻常的,通常它只在头文件中。
答案 3 :(得分:0)
我认为这是C包含问题的回归,其中包含多个源代码副本 - 除非您对包含链一丝不苟(一个文件包含n个其他文件)。 检查是否定义了符号,并且仅在符号被定义时包括 - 这是一种方法。