Terry 发表于 2015-7-29 18:41:26

关于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++等。

alex.lin 发表于 2015-7-31 11:04:53

还有一个方法就是安装keil5
然后做如下设置:

QH_飞蓬 发表于 2015-7-31 16:15:51

学习了,感谢分享!!

Jackie 发表于 2015-7-31 16:18:57

学习了,谢谢楼主分享
页: [1]
查看完整版本: 关于Keil_C99标准