问题描述
- 类型名与变量名冲突(c,c++)
-
使用两个动态库时:
一个库的头文件中:#define uc unsigned char
另一个库 头文件中:uchar uc;编译时,提示:
multiple types in one declaration
in expantion of macro 'uc'不能更改这两个库的变量名或类型名,怎么处理这种情况呢?
解决方案
使用命名空间区分
解决方案二:
可以用namespace
解决方案三:
multiple types in one declaration
in expantion of macro 'uc' 知道这句话什么意思吗? 他是说你用了多种类型却没有定义变量,这在语法上是不可能过去的,也就是说你的程序
死在了编译器的语法分析上面。 你的程序在与处理时候把unsigned char 直接替换为 uc , 那么你现在 uchar uc 相当于 uchar unsigned char ,
这样的话虽然我不知道你的uchar 转定义后是什么,两种情况①变量②类型, 当他是类型时:当类型为 int 时, 那么相当于 int unsigned char ,你这是类型重复,明显的语法错误, 当他是变量时:例如 str , 那么 相当于 str unsigned char; 变量在前,类型在后,语法分析依然过不去......
解决方案四:
所以不能这样用。。。说白了是库的兼容性问题!
时间: 2024-08-07 15:23:19