我想知道“precompile(r)指令”和“预处理程序指令”是否相同?我对前者并不熟悉,但只是听说过它,并通过Google搜索在互联网上找到了一些相关信息,例如Dirk Henkemans和Mark Lee的“C++ programming for the absolute beginner”p40。
答案 0 :(得分:2)
你的问题相当于在他们说“预编译指令”时询问人们是否意味着“preprocessor指令”,这不是一个可回答的问题。
在C或C ++上下文中,如果他们说“预编译指令”,我怀疑人们非常可能指的是预处理器指令。
你引用的那本书就是一个例子。它正在谈论C预处理器指令“#define
”。我怀疑它使用“预编译指令”作为描述,而不是名称。
我发布的所有搜索结果都是那些寻求C预处理程序指令帮助的人的帖子。
尽管如此,我不能肯定地说,所有人在任何时候都是如此。
微软可能根据我做的另一个搜索结果制作了一个使用“预编译器指令”的工具,但它并没有谈论C,C ++或cpp
。
答案 1 :(得分:1)
是的,它们听起来完全一样。我认为预处理器指令更常用(我从未听说过预编译器)。
这是一个非常好的指令列表/它们的作用: http://www.cplusplus.com/doc/tutorial/preprocessor/
答案 2 :(得分:1)
这取决于上下文,但对于大多数人来说,如果你使用的是纯C代码,那么它们是相同的,尽管'预处理器指令'比'预编译指令'或'更常见'预编译器指令'。
ISO / IEC 9899:1999标准的§6.10预处理指令部分表明'预处理器'或'预处理'比'预编译(r)'更标准。
但是,如果您使用ESQL / C(C语言中的嵌入式SQL),则会有所不同:
我使用的ESQL / C编译器具有如下指令:
$include sqlca;
$define APERITIF 32;
$include "header.h";
$ifdef APPETIZERS;
$define AVOCADO 1;
$endif;
#include <stdio.h>
int main(void)
{
$ int var1;
$ whenever error stop;
$ database "whatever";
$ select max(tabid) into :var1 from systables;
printf("%d\n", var1);
return 0;
}
以'$'开头的行是ESQL / C预编译器指令 - 针对预编译器。它们为ESQL / C预编译器提供了帮助它将嵌入式SQL语句转换为C代码所需的信息,然后由完整的C编译器编译。但ESQL / C预编译器也称为ESQL / C预处理器(以区别于C预处理器),因此区别并不像所有那样强硬。在这种情况下,ESQL / C编译器作为一个整体是一个shell脚本,它运行ESQL / C预编译器,然后运行C编译器。 (其中有一些额外的并发症与此问题无关。)