Это немного зависит от контекста, но для большинства людей большую часть времени, если вы работаете в чистом C-коде, это одно и то же, хотя «директива препроцессора» гораздо более распространена, чем «директива прекомпиляции» или «Директива прекомпилятора '.
Раздел §6.10 Директивы предварительной обработки стандарта ISO / IEC 9899: 1999 указывают, что «препроцессор» или «предварительная обработка» более стандартны, чем «прекомпиляция (r)».
Если, однако, вы работаете с ESQL / C (Embedded SQL in C), то есть разница:
- Директивы прекомпилятора предназначены для прекомпилятора ESQL / C,который преобразует ESQL / C в чистый C.
- Директивы препроцессора предназначены для препроцессора C, который является частью компилятора C, который (в целом) преобразует исходный код C в объектный код или исполняемые файлы и т. д.
Компилятор 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, предназначенные для pr.ecompiler.Они предоставляют прекомпилятору ESQL / C информацию, необходимую для преобразования преобразованных операторов SQL в код C, который затем компилируется полноценным компилятором C.Но прекомпилятор ESQL / C также называется препроцессором ESQL / C (чтобы отличить его от препроцессора C), поэтому различие не так сложно и быстро, как все это.В этом случае компилятор ESQL / C в целом является сценарием оболочки, который запускает прекомпилятор ESQL / C, а затем компилятор C.(Есть некоторые дополнительные осложнения, которые не касаются этого вопроса.)