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

时间:2020-03-05 18:45:54  来源:igfitidea点击:

当Eclipse在C项目中创建一个新文件(.c或者.h文件)时,编辑器总是自动在文件顶部创建一个#define,如下所示:如果该文件名为" myCFile.c",则会出现像这样在文件开头的#define

#ifndef MYCFILE_C_
#define MYCFILE_C_

我也看到其他编辑器也这样做(我认为是Codewright和SlikEdit)。
#defines似乎对编辑器没有任何作用,因为我可以毫无问题地删除它们,也无法想出为什么要使用它们的原因。有人知道他们为什么在那里吗?

解决方案

回答

这是要防止多种定义。

回答

我认为这是C包含问题的回溯,除非我们对包含链一丝不苟(一个文件包含n个其他文件),否则将包含源的多个副本。
检查是否定义了符号,并且仅在定义了符号的情况下才包括在内,这是解决问题的一种方法。

回答

有时人们会将整个.c文件包括在其他.c文件(甚至是.h文件)中,因此它具有与防止包含文件被多次包含以及编译器吐出多个定义错误的确切目的相同。

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

回答

一个更现代的版本是使用:

#pragma once

在.c文件中看到此消息是非常不寻常的,通常它仅在头文件中。