4

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

#ifndef MYCFILE_C_
#define MYCFILE_C_

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

4

4 回答 4

4

这是为了防止多重定义

于 2008-09-01T09:43:02.727 回答
2

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

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

于 2008-09-01T09:46:05.857 回答
1

更现代的版本是使用:

#pragma once

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

于 2008-09-01T20:54:05.097 回答
0

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

于 2008-09-01T09:43:06.160 回答