【发布时间】:2016-09-15 11:23:14
【问题描述】:
我知道#define 函数是一个预处理器命令,它基本上是复制和粘贴代码块,因为没有更好的解释。我不清楚的是它插入的 Eclipse 头文件的模板中:
#ifndef <FileName>_H
#define <FileName>_H
//Code, definitions etc....
#endif
我知道它正在定义一个变量来告诉某些文件已定义,我不知道为什么? PHP 中的这种东西与#INCLUDE_ONCE 是一样的吗?我试图在这里和谷歌上搜索这个,但我不太确定我想要的命名是什么,我发现的所有东西都解释了它是什么,它是如何工作的等等......
编辑
由于这类似于 PHP 中的 #include once,那么放置 #include 语句的最佳做法是什么?我假设您希望将它们包含在#define 中,这样如果文件已经包含,它们就不会被包含在内,这也是正确的吗?如果包含的文件在#define 命令之外,它们不会被包含进来吗?
【问题讨论】:
-
命名法是Include guard
-
首先要学习的是非常小心地使用“函数”这个词。它有一个特定的含义,预处理器命令离它很远。
-
许多现代编译器支持
#pragma once,它做同样的事情,而且通常更容易阅读。它不是标准的(还),但得到了相当广泛的支持。 -
如果您愿意,可以在 Eclipse 中更改代码文件模板。窗口 -> 首选项 -> C/C++ -> 代码样式 -> 代码模板
标签: c c-preprocessor