/*轻松一下---由编译器定义的Pragmas效果*/
/*Free Software Foundation, FSF) 自由软件基金会
*MIT顶级黑客Richard Stallman创立(天才程序员)
*初衷:软件应该是免费的,所有人都可以自由使用。
*宗旨:消除在计算机程序复制、重发布、理解和修改方面的限制
*建立一个UNIX的自由软件实现方案,称为GUN(代表GUN's Not UNIX)。
*作品:GUN C编译器系列
*gcc是一个在代码优化方面具有创造性的健壮的编译器,可以在很多硬件平台使用,
*有时甚至比编译器厂商的产品更为优秀
*/
/*
*指定ANSI C标准时,引入了pragma指示符,这个指示符来源于Ada
*#pragma作用:用于向编译器提示一些信息,诸如希望把某个特定函数扩展为内联函数,或者
*取消边界的检查。由于它并非C语言所固有,pragma遭到了一个gcc编译器设计者的积极抵制。
*/
/*
*#pragma指示符的行为是由编译器定义的
*在GUN C编译器中,它的定义如下:
*/
do_pragma() {
close(0);
if (open("/dev/tty", O_RDONLY, 0666) != 0)
goto nope;
close(1);
if (open("/dev/tty", O_ WRONLY, 0666) != 1)
goto nope;
//运行hack游戏
exel("/usr/games/hack", "#pragma", 0);
//运行rogue游戏
exel("/usr/games/rogue", "#pragma", 0);
//运行GUN emacs
exel("/usr/new/emacs", "-f", "hanoi", "9", "-kill", 0);
exel("/usr/local/emacs", "-f", "hanoi", "9", "-kill", 0);
//报告致命错误
nope:
fatal("you are in a maze of twisty compiler features, all different")
}