在 C 编辑器中自动定义...为什么?
-
09-06-2019 - |
题
什么时候 蚀 创建一个新文件(。C 或者 。H 文件)在 C 项目中编辑器总是自动创建一个 #define
在文件的顶部,如下所示:如果文件名为“myCFile.c”,则会有一个 #define
像这样在文件的开头
#ifndef MYCFILE_C_
#define MYCFILE_C_
我见过其他编辑器也这样做(我认为是 Codewright 和 SlikEdit)。这 #defines
似乎没有为编辑器做任何事情,因为我可以毫无问题地删除它们,而且我想不出原因 我 会想要使用它们。有谁知道他们为什么在那里?
解决方案
是为了防范 多重定义.
其他提示
有时人们将整个 .c 文件包含在其他 .c 文件(甚至 .h 文件)中,因此它具有完全相同的目的,即防止包含文件被多次包含以及编译器吐出多个定义错误。
但奇怪的是,编辑器的默认行为是将其放入除 .h 文件之外的任何文件中。这将是一个很少需要的功能。
更现代的版本是使用:
#pragma once
在 .c 文件中看到这一点是很不寻常的,通常它只出现在头文件中。
我认为这是 C 包含问题的倒退,其中源代码的多个副本将被包含 - 除非您对包含链非常细致(一个文件包含 n 个其他文件)。检查符号是否已定义并仅包含该符号是否已定义 - 是解决此问题的一种方法。
不隶属于 StackOverflow