请输入关键词进行检索 使用帮助
Google
 
如何让yylex后的代码运行-代码

下面是利用lex写的一段代码,

%%

.* printf(“hello\n”);

quit exit(0);

%%

main()

{

yylex();

printf(“bye\n”);

}

在没有彻底明白lex编译以后的文件流程的情况下,如何在程序结束时让yylex()后的printf()打印出结果呢?我们执行编译成的可执行文件会发现倘若我们只是用ctrl+c或quit退出程序是直接在当前位置退出程序,后面的printf根本不会执行。解决这个小问题,下面我用一种间接的方法实现了它:

%{

#include

#include

jmp_buf position;

%}

%%

quit longjmp(position,1);

.* printf(“hello\n”);

%%

main()

{

extern int function();

if(setjmp(position)==1)

goto quit;

signal(SIGINT, function);

yylex();

quit:

printf(“bye\n”);

exit(0);

}

function()

{

longjmp(position,1);

}

以上代码在AIX下调试通过


本刊由产品互链网提供,资料仅供参考

  • 数控设备日常维护保养-日常维护
  • 数控铣床的加工工艺范围-数控铣
  • 数控设备的干扰问题-干扰
  • FANUC系统键盘定义-FANUC
  • 数控编程高手的八大必备条件-数控编程
  • 基于精密测量的复杂零件的快速反求-测量
 申请编辑员
 相关知识
欢迎成为编辑员
  本网为开放式知识库,成为编辑员可共同维护相关栏目知识。

产品互链网 © 版权所有 2001-2007 | 服务建立友谊 | 辽ICP备06016610号