Не совсем. По крайней мере, не так, чтобы наполнять какой-либо практический смысл.
Сначала запускается препроцессор, и он пока не изменит "import" на "#include", а затем он выдает результат компилятору. Но компилятор не понимает директив препроцессора. Кроме того, язык C не имеет функции для включения файлов. Предполагается, что этим занимается препроцессор.
Итак, одна вещь, которую МОЖНО сделать, хотя это не то, что вам когда-либо следует делать в производственном коде, - это запустить препроцессор дважды. Весьма вероятно, что этот подход приведет к ошибкам, которые сложно найти.
$ cat a.c
#define begin {
#define end }
#define import #include
import <stdio.h>
int main() begin
return 0;
end
$ gcc -E a.c > b.c
$ cat b.c
# 1 "a.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "a.c"
#include <stdio.h>
int main() {
return 0;
}
$ gcc b.c
$
Вы можете упростить приведенное выше до одной команды следующим образом:
gcc -E a.c | gcc -xc -
(Последний da sh важно)