为什么#include之前需要#?

发布于 2024-09-08 13:30:52 字数 35 浏览 6 评论 0原文

#的作用是什么?  

What is the function of #?
 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

携余温的黄昏 2024-09-15 13:30:52

表示预处理器指令

您需要记住的一件重要事情是 C 预处理器不是 C 编译器的一部分。

C 预处理器使用不同的语法。 C 预处理器中的所有指令均以井号 (#) 开头。换句话说,井号表示预处理器指令的开始,并且它必须是该行中的第一个非空格字符。

#可能被任意选择为 C 语法中未使用的字符。我认为 @ 也会同样有效。

如果没有表示它的字符,那么区分用于预处理器的代码可能会遇到麻烦 - 您如何判断 if (FOO) 是否应该进行预处理?

It denotes a preprocessor directive:

One important thing you need to remember is that the C preprocessor is not part of the C compiler.

The C preprocessor uses a different syntax. All directives in the C preprocessor begin with a pound sign (#). In other words, the pound sign denotes the beginning of a preprocessor directive, and it must be the first nonspace character on the line.

# was probably chosen arbitrarily as an otherwise unused character in C syntax. @ would have worked just as well, I presume.

If there wasn't a character denoting it, then there would probably be trouble differentiating between code intended for the preprocessor -- how would you tell whether if (FOO) was meant to be preprocessed or not?

勿忘心安 2024-09-15 13:30:52

因为#是引入预处理器语句的标准前缀。

在早期的 C 编译器中,预处理器是一个单独的程序,它将处理所有预处理器语句(类似于早期 C++“编译器”,例如 cfront 生成 C 代码)并为编译器生成 C 代码(它可能仍然是一个单独的程序,但现在它也可能只是编译器的一个阶段)。

# 符号只是一个有用的字符,可以被预处理器识别并执行操作,例如:

#include <stdio.h>
#if 0
#endif
#pragma treat_warnings_as_errors
#define USE_BUGGY_CODE

等等。

Because # is the standard prefix for introducing preprocessor statements.

In early C compilers, the pre-processor was a separate program which would handle all the preprocessor statements (similar to the way early C++ "compilers" such as cfront generated C code) and generate C code for the compiler (it may still be a separate program but it may also be just a phase of the compiler nowadays).

The # symbol is just a useful character that can be recognised by the preprocessor and acted upon, such as:

#include <stdio.h>
#if 0
#endif
#pragma treat_warnings_as_errors
#define USE_BUGGY_CODE

and so on.

メ斷腸人バ 2024-09-15 13:30:52

预处理器指令是包含在程序代码中的行,它们不是程序语句,而是预处理器的指令。这些行前面始终带有井号 (#)。预处理器在代码实际编译开始之前执行,因此预处理器会在语句生成任何代码之前消化所有这些指令。

来源:http://www.cplusplus.com/doc/tutorial/preprocessor/< /a>


Preprocessor directives are lines included in the code of our programs that are not program statements but directives for the preprocessor. These lines are always preceded by a hash sign (#). The preprocessor is executed before the actual compilation of code begins, therefore the preprocessor digests all these directives before any code is generated by the statements.

Source: http://www.cplusplus.com/doc/tutorial/preprocessor/

粉红×色少女 2024-09-15 13:30:52

这是因为 # 是一个指示符,表明它是一个预处理器语句

,意味着在编译代码之前,它将包含文件 stdio.h

It's because # is an indicator that its a preprocessor statement

meaning before it compiles your code, it is going to include the file stdio.h

你怎么敢 2024-09-15 13:30:52

# 是一个预处理器指令。预处理器处理源文件包含 (#include)、宏定义 (#define) 和条件包含 (#if) 的指令。
当预处理器遇到这种情况时,它将包含标头,展开宏并继续进行编译。它可用于其他目的,例如使用 #error 指令停止编译。这称为条件编译。

# is a pre-processor directive. The preprocessor handles directives for source file inclusion (#include), macro definitions (#define), and conditional inclusion (#if).
When the pre-processor encounters this, it will include the headers, expand the macros and proceeds towards compilation. It can be used for other purposes like halting compilation using the #error directive. This is called conditional compilation.

三寸金莲 2024-09-15 13:30:52

我们知道,没有预处理器程序就无法运行。预处理器是#或#include或#define或其他。所以#include 之前需要#。

We know, without preprocessor programm do not run. And preprocessor is # or #include or #define or other. So # is required before #include .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文