代码之家  ›  专栏  ›  技术社区  ›  c0m4

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

  •  3
  • c0m4  · 技术社区  · 16 年前

    什么时候? 日食 创建新文件( C h 文件)在C项目中,编辑器始终自动创建 #define 在这样的文件顶部:如果文件名为“mycfile.c”,则 α定义 在像这样的文件开头

    #ifndef MYCFILE_C_
    #define MYCFILE_C_
    

    我也看到过其他编辑也这样做(我认为是编剧和斯莱克迪)。 这个 #defines 似乎没有为编辑做任何事情,因为我可以毫无问题地删除它们,而且我想不出为什么 会想用的。有人知道他们为什么在那里吗?

    4 回复  |  直到 9 年前
        1
  •  4
  •   Eugene Yokota    16 年前

    这是为了防范 multiple definitions .

        2
  •  2
  •   Jim Buck    16 年前

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

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

        3
  •  1
  •   1800 INFORMATION    16 年前

    更现代的版本是使用:

    #pragma once
    

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

        4
  •  0
  •   Gishu    16 年前

    我认为这是C include问题的复古,其中包含了源文件的多个副本-除非您对include链(一个文件包含n个其他文件)非常细致。 检查是否定义了符号,并且仅在定义了符号的情况下才包括符号,这是一种解决方法。