Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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++ 预处理器IDE是唯一的功能吗?_C++_C_Compilation_Ide_Preprocessor - Fatal编程技术网

C++ 预处理器IDE是唯一的功能吗?

C++ 预处理器IDE是唯一的功能吗?,c++,c,compilation,ide,preprocessor,C++,C,Compilation,Ide,Preprocessor,我试图做我的研究,但无法找到预处理器的真正来源——它们是IDE的一部分(意味着每个IDE都有自己的实现)、独立程序还是编译器的一部分 如果它们成为现代编译器的一部分,我想历史上并不是这样的。那时候是怎么回事 谢谢不,预处理器是编译器的一部分。如果您从控制台编译(即直接使用gcc或其他编译器),预处理仍然可以工作 预处理是如此强大的工具,我相信它一直是编译器的一部分。或者,如果一些早期的编译器缺少这一功能,那么就必须手动完成预处理器的工作。不,预处理器是编译器的一部分。如果您从控制台编译(即直接使

我试图做我的研究,但无法找到预处理器的真正来源——它们是IDE的一部分(意味着每个IDE都有自己的实现)、独立程序还是编译器的一部分

如果它们成为现代编译器的一部分,我想历史上并不是这样的。那时候是怎么回事


谢谢

不,预处理器是编译器的一部分。如果您从控制台编译(即直接使用gcc或其他编译器),预处理仍然可以工作


预处理是如此强大的工具,我相信它一直是编译器的一部分。或者,如果一些早期的编译器缺少这一功能,那么就必须手动完成预处理器的工作。

不,预处理器是编译器的一部分。如果您从控制台编译(即直接使用gcc或其他编译器),预处理仍然可以工作


预处理是如此强大的工具,我相信它一直是编译器的一部分。或者,如果一些早期的编译器缺少这一功能,那么就必须手动完成预处理器的工作。

关于这种语言的最早工作,几年后命名为“C”始于1969年,基于语言BCPL预处理器于1972年投入使用

C在当时仍在进行中,因此我们可以说,预处理器是从C本身就存在的。没有预处理器就没有C编译器。。C++在C之后就开始了生命,它从一开始就有预处理器。 如果预处理器是一个独立的可执行文件而不是编译器,这是无关紧要的,但通常它是编译器的一部分。当时没有IDE


在那里你可以阅读更多。这是关于预处理器的部分:


1972-3年前后发生了许多其他变化,但最重要的是引入了预处理器,部分是在Alan Snyder[Snyder 74]的敦促下,但也认识到BCPL和PL/I中可用的文件包含机制的实用性。其原始版本非常简单,并且只提供了包含的文件和简单的字符串替换:#包含和#定义无参数宏。此后不久,它被扩展,主要由Mike Lesk和John Reiser进行扩展,以将宏与参数和条件编译结合起来。预处理器最初被认为是语言本身的可选附件。事实上,在一些年里,它甚至没有被调用,除非源程序在开始时包含一个特殊的信号。这种态度一直存在,并解释了预处理器语法与语言其余部分的不完全集成以及早期参考手册中对其描述的不精确性

关于这种语言的最早研究工作将在几年后命名为“C”,始于1969年,以BCPL语言为基础预处理器于1972年投入使用

C在当时仍在进行中,因此我们可以说,预处理器是从C本身就存在的。没有预处理器就没有C编译器。。C++在C之后就开始了生命,它从一开始就有预处理器。 如果预处理器是一个独立的可执行文件而不是编译器,这是无关紧要的,但通常它是编译器的一部分。当时没有IDE


在那里你可以阅读更多。这是关于预处理器的部分:


1972-3年前后发生了许多其他变化,但最重要的是引入了预处理器,部分是在Alan Snyder[Snyder 74]的敦促下,但也认识到BCPL和PL/I中可用的文件包含机制的实用性。其原始版本非常简单,并且只提供了包含的文件和简单的字符串替换:#包含和#定义无参数宏。此后不久,它被扩展,主要由Mike Lesk和John Reiser进行扩展,以将宏与参数和条件编译结合起来。预处理器最初被认为是语言本身的可选附件。事实上,在一些年里,它甚至没有被调用,除非源程序在开始时包含一个特殊的信号。这种态度一直存在,并解释了预处理器语法与语言其余部分的不完全集成以及早期参考手册中对其描述的不精确性

它们的语法是语言的一部分(至少是标准语法),它们是编译器工具套件的一部分,并且一直都是。与IDE无关,没关系。每一个工具链都可以按自己的意愿实现它。任何C或C++编译器都有自己的内部预处理器,或者与它调用的预处理器捆绑在一起。除此之外,IDE可能还包括扩展宏定义的功能,因为这对调试很有用,因此编译器将有一个预处理器并不意味着IDE不能有自己的预处理器。此外,IDE可以有自己的自定义预处理器,例如,有一个。它们的语法是语言的一部分(至少是标准语法)。它们是编译器工具套件的一部分,并且一直都是。与IDE无关,没关系。每一个工具链都可以按自己的意愿实现它。任何C或C++编译器都有自己的内部预处理器,或者与它调用的预处理器捆绑在一起。除此之外,IDE可能还包括扩展宏定义的功能,因为这对调试很有用,因此编译器将有一个预处理器并不意味着IDE不能有自己的预处理器。此外,IDE可以有自己的自定义预处理器,例如有一个。在shell中永远不要使用
cpp foo.c