Как написать программу во время компиляции? - PullRequest
7 голосов
/ 03 октября 2009

Напишите небольшую программу на C, которая при компиляции берет другую программу от входного терминала, и при запуске дает результат для второго программа. (ПРИМЕЧАНИЕ: ключ, подумайте UNIX).

Предположим, программа 1.c Затем при компиляции

$ cc -o 1 1.c
int main()
{
    printf("Hello World\n");
}
^D
$ ./1
Hello World
$

Ответы [ 2 ]

14 голосов
/ 03 октября 2009

Я думаю, это старый трюк с парларом

Моя программа, tty.c:

#include "/dev/tty"

Shell:

$ gcc tty.c
int main() {
printf("Hey\n");
} *Ctrl-D here*
In file included from tty.c:1:
/dev/tty: In function ‘main’:
/dev/tty:2: warning: incompatible implicit declaration of built-in function ‘printf’
$./a.out 
Hey
1 голос
/ 03 октября 2009

Самый разумный способ заставить компиляцию прочитать файл - это #include, но мне не очевидно, как заставить его читать стандартный ввод переносимым способом во всех системах Unix (легко в Linux , благодаря магии /proc !, но это не было бы портативно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...