设备移植相关问题_常见问题_阿里云物联网平台-
2020-02-10
分类:阿里云帮助文档
阅读(1946) 评论(0)
设备移植相关问题
IoT_SDKV2.0在高通MDM9206平台上移植的已知问题
编译问题
- ArmCC不支持C语言中变量定义和逻辑语句混杂, 声明段落必须在逻辑段落之前完整结束
- ArmCC不支持用花括弧的方式定义匿名结构体实例作为右值
- ArmCC处理枚举类型时, gcc及其变种按照int处理, 而armcc有严格的编译时检查, 多按unsigned int处理
- ArmCC不支持在if, while, for逻辑的判断语句中有变量赋值
- 函数内多分支情况, ArmCC对不可达分支处的return语句严格报错导致编译失败
- ArmCC不支持返回值被声明为枚举类型的函数, 实际上返回值是int等gcc所认为的等价数据类型
- 标准库头文件内容有差异, gcc编译时可以找到的定义如size_t, typeof等, 在armcc上找不到
- ArmCC不支持GNU风格扩展函数, 如vasnprintf, asprintf
- ArmCC不支持GNU风格扩展数据结构, 如匿名结构体, 结构体匿名成员赋值等
运行问题
- 使用标准库函数tolower(), 需要对应引用头文件”ctype.h”, 不能用, 否则运行会卡死
- 使用高通的串口打印函数, 不能用”%s”格式打印0长度的字符串, 否则运行会卡死
- 在HTTP Client的代码如
src/utils/misc/utils_httpc.c
中, 使用了C标准库函数sscanf(), 由于高通的C库问题, 这些代码运行到时会卡死
云标签: