Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果c不',我们如何能够使用include指令中的小于号(';&';或甚至大于(';';)呢;不支持运算符重载?_C_Operator Overloading_C Preprocessor - Fatal编程技术网

如果c不',我们如何能够使用include指令中的小于号(';&';或甚至大于(';';)呢;不支持运算符重载?

如果c不',我们如何能够使用include指令中的小于号(';&';或甚至大于(';';)呢;不支持运算符重载?,c,operator-overloading,c-preprocessor,C,Operator Overloading,C Preprocessor,我们都知道c不支持运算符重载。有人能告诉我如果是这样的话,那么我们如何在#include指令和比较中使用小于号?或者所提供的功能被称为其他功能并用语言定义 最常见的例子是C预处理器,它将以“#”开头的行作为指令因为它对底层语言一无所知。。。() 预处理器不知道“C中的许多符号根据上下文具有不同的含义 例如: *可以表示乘法或指针解引用 这种双重含义使得编写C解析器有点棘手,甚至在代码未编译时提供有用的错误消息更为棘手 请注意,这种双重含义是而不是运算符重载。它们是两个独立的运算符 当涉及到#in

我们都知道c不支持运算符重载。有人能告诉我如果是这样的话,那么我们如何在#include指令和比较中使用小于号?或者所提供的功能被称为其他功能并用语言定义

最常见的例子是C预处理器,它将以“#”开头的行作为指令因为它对底层语言一无所知。。。()


预处理器不知道“C中的许多符号根据上下文具有不同的含义

例如:

*
可以表示乘法或指针解引用

这种双重含义使得编写C解析器有点棘手,甚至在代码未编译时提供有用的错误消息更为棘手

请注意,这种双重含义是而不是运算符重载。它们是两个独立的运算符


当涉及到
#include
指令时,答案是它们是由预处理器处理的。在预处理器步骤之后,
都消失了-该行已被include文件的全部内容所取代。

尽管通常我们只是调用类似于
gcc file.c
的东西来编译our源文件,尽管我们说我们“编译”,但在幕后发生了很多不同的事情

源文件发生的第一件事是预处理。在您写下源文件时,它会被输入预处理器。预处理器只关心
-开始的行,包括,嗯…
\include

一旦预处理器完成了它的工作,所有这些
都将被
头.h
的实际内容所取代,这样您的源文件现在才准备好由编译器实际编译。请尝试
gcc-E file.c
查看发生了什么

现在C编译器开始运行。它看到的任何
都只是比较运算符


再次说明:
#include
指令用于预处理器,其余指令用于编译器。后者在前者之后工作。

运算符由解析器/编译器处理。
#include
是一个预处理器指令,它在解析器之前工作,通过它具有不同的语法,预处理器指令不同于逻辑操作符号,预处理器指令用于具有不同语法的预处理器阶段,两者都无法比较此处没有运算符重载。编译器或用户都没有重新定义该运算符。这是一种语法问题,如
*
运算符含义取决于上下文,即使没有人重载它,也没有运算符重载f定义当上下文为“this”时,您希望操作员执行不同的操作“。那么它有什么不同呢?请投反对票的人说明你投了什么票?问题出了什么问题?实际上,它知道较少的运算符,并且可以在
#if
指令中处理它。通过,它与
#include
@myaut是不同的指令,我不同意。它遵循的规则说明了“它是什么样子的?预处理器在处理时是否不知道小于号#include,并且在涉及到#if?困惑!它知道看到它时突然知道它”感谢@noobokay的帮助,但预处理器难道不知道在处理#include directiive时它是一个小于符号吗?在处理
#include
指令时,预处理器需要两件事之一;
“文件名”
。如果它找到了其中一个,那么它将生成一条错误消息。在这个上下文中,它知道
并不意味着“小于”和“大于”。它没有看到“小于”符号,而是在寻找一个角度bracket@PushpinderSinghGrewal预处理器查找预处理器指令(还有其他指令,但它们都以
开头)。当它找到一个指令时,它会根据找到的预处理器指令执行不同的操作。@PushpinderSinghGrewal请参阅
#include
预处理器指令的语法示例。
"="         { count(); return('='); }
"=="            { count(); return(EQ_OP); }