关于Keil_C99标准
问题描述:如果在工程项目中不配置--c99,将对一些代码的编写不支持如下:在a.h中**typedef struct _uart2_t{ uint32baud; uint8 rx_buf; uint16 rx_ptr; uint8 tx_buf; uint16 tx_len; uint8 receive_flag; void (* init)(void); void (* send_bytes)(uint8* buf,uint32 len); void (* send_string)(uint8* str); //void (* printf)(uint8 *frame,...);}uart2_t;在a.c中包含此头文件并且初始化uart2_t uart2={ .rx_ptr=0, .baud=9600, .init=usart2_init, .send_bytes= uart2_put_bytes, .send_string=uart2_put_str,};编译出现问题:显示未**解决方案:解决方案一:在a.c中包含头文件uart_t uart2;uart2.rx_ptr=0;编译正确解决方案二:在工程配置中加上--c99问题延伸:--c99编译器(基于ANSI C为基础的编译系统)对标准的支持情况各一。如gcc支持最新的--c99标准C99是标准ISO/IEC 9899:1999的简称。c99是在c89的基础上发展起来的,增加了基本数据类型,关键字和一些系统函数等。其实在初学阶段C89(ANSI C)和C99的区别是不易察觉的,所以不必太在意这个。C99有一部分是对于大字符集的优化(很多资料上写的是ANSI标准化),还加入了一些数据库函数,是C89之后的标准,我们用的C是C89标准的,C++是C89编写的,目前的C99标准其实在以前的编译器中就或多或少的支持了,目前完全支持的有这些:GCC、Borland C++等。还有一个方法就是安装keil5
然后做如下设置: 学习了,感谢分享!! 学习了,谢谢楼主分享
页:
[1]