老古开发网首页
导航:老古开发网首页文章索引文章分类单片机→[keil 7.0编译出现:error C316: unterminated conditionals]
| -文章搜索 - 最新文章 - |

keil 7.0编译出现:error C316: unterminated conditionals

发布时间:2002年5月14日 点击次数:6373
来源:   作者:
 
很多程序用keil c51 v6.xx可以编译通过,但用v7.0出现C316的错误.原因在于v7.0的setjmp.h头文件出错.

v7.0的setjmp.h文件比6.23的做了改动.v7.0的setjmp.h文件有语法错误.

v7.0的setjmp.h内容如下:
/*--------------------------------------------------------------------------
SETJMP.H

Prototypes for longjmp facility.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

/* define the buffer type for holding the state information */
#ifdef __CX51__
#ifndef _JMP_BUF_DEFINED
#define _JBLEN    9  /* SP, SPE, ?C_XBP, ?C_IBP, ?C_PBP, RET-ADDR */
#else
#ifndef _JMP_BUF_DEFINED
#define _JBLEN    7  /* RET-ADDR, ?C_XBP, ?C_IBP, ?C_PBP, SP */
#endif

typedef  char jmp_buf[_JBLEN];
#define _JMP_BUF_DEFINED

/* function prototypes */
int  setjmp  (jmp_buf);
void longjmp (jmp_buf, int);
===========================================
而V6.23的setjmp.h内容如下:
/*--------------------------------------------------------------------------
SETJMP.H

Prototypes for longjmp facility.
Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

/* define the buffer type for holding the state information */

#pragma SAVE
#pragma REGPARMS
#ifndef _JMP_BUF_DEFINED
#define _JBLEN    7  /* RET-ADDR, ?C_XBP, ?C_IBP, ?C_BP, SP */
typedef  char jmp_buf[_JBLEN];
#define _JMP_BUF_DEFINED
#endif

/* function prototypes */
int  setjmp  (jmp_buf);
void longjmp (jmp_buf, int);
#pragma RESTORE
===================================
这两个文件不同,当包含该文件时,也就是#include
时会导致编译错误.
这应该是软件的一个新的bug.建议不要使用setjmp.h或者对setjmp.h使用旧版本的文件.


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
请问:ERROR 104: MULTIPLE PUBLIC DEFINITIONS是什么意思,如何产生的?
简介:
请问:ERROR 104: MULTIPLE PUBLIC DEFINITIONS是什么意思,如何产生的? 答: 重复定义。比如头文件重复声明,变量或者函数定义重复等。 ......

:#pragma REGISTERBANK(0) 什么意思?
编译出现:***WARNING L16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS SEGMENT
怎么好像idata 跟data一样用的都是ram的低128字节
外部中断使能后,向P3.2或P3.3写0会触发外部中断吗?
全部的国标二级汉字
贴片电阻的精度是如何规定的?
通常用法的 51单片机 UART 0 初始化程序
IDATA的地址范围是从0到ffh还是从80h到ffh?
os_wait (K_TMO + K_SIG, 250, 0)中的“+”就是“|”吗,是不是都代表或的意思?
 
下一个:[嵌入式系统]接触式图像传感器的信号读取与补偿技术
简介:
山东华菱电子有限公司  王 翥 哈尔滨工业大学威海分校 佟晓筠   图像传感器是利用光电转换原理将图像数据转换为一系列电子信号的一种装置。接触式图像传感器CIS是80年代末出现的一种新型图像传感器,是以CMOS技术为主的一种光电扫描器件。CIS相比于CCD具有体积小、速度快、成本低、安装调试简单等优点。但无论是CIS还是CCD都要考虑干扰信号、传感器偏差等因素对图像信号的影响,只有排除了这些影响,才能真实地再现图像信息。 明输出与暗输出   明输出VP是指当CIS读取白样张时......
 

上一个:[新闻热点]SanDisk成为Advantech闪存供应商

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:31毫秒