【问题标题】:Auto defines in C editors... Why?在 C 编辑器中自动定义...为什么?
【发布时间】:2010-09-07 10:48:19
【问题描述】:

Eclipse 在 C 项目中创建新文件(.c.h 文件)时,编辑器始终会自动创建 @987654321 @ 在文件的顶部是这样的:如果文件被命名为'myCFile.c',那么文件的开头就会有一个#define,就像这样

#ifndef MYCFILE_C_
#define MYCFILE_C_

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

【问题讨论】:

    标签: c eclipse header-files c-preprocessor include-guards


    【解决方案1】:

    这是一个更现代的版本:

    #pragma once
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 有些东西应该放在*.h 中(如typedefstruct 定义),但不能重复。因此,正如您所说,这不是倒退。
        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-08
          • 2011-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多