c语言-类型名与变量名冲突(c,c++)

问题描述

类型名与变量名冲突(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; 变量在前,类型在后,语法分析依然过不去......


解决方案四:

所以不能这样用。。。说白了是库的兼容性问题!

解决方案五:

可以使用namespace 进行区分

时间: 2024-08-07 15:23:19

c语言-类型名与变量名冲突(c,c++)的相关文章

PHP的可变变量名介绍

有时候可变的变量名会给编程带来很大的方便.也就是说变量名可以被动态的命名和使用.通常变量通过下面这样的语句来命名 : <?php $a = "hello"; ?>  可变变量名指的是使用一个变量的值作为这个变量的名称.在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样. <?php $$a = "world"; ?>  通过上面的两个语句,有两个变量被定义:变量$a,装的内容是"hello&qu

PHP的可变变量名

有时候可变的变量名会给编程带来很大的方便.也就是说变量名可以被动态的命名和使用.通常变量通过下面这样的语句来命名 : <?php  $a = 'hello';  ?>  可变变量名指的是使用一个变量的值作为这个变量的名称.在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样. <?php  $$a = 'world';  ?>  通过上面的两个语句,有两个变量被定义:变量$a,装的内容是"hello" 以及变量$hello,装

PHP的可变变量名使用方法详解

有时候可变的变量名会给编程带来很大的方便.也就是说变量名可以被动态的命名和使用.通常变量通过下面这样的语句来命名 :  代码如下 复制代码     <?php     $a = 'hello';     ?> 可变变量名指的是使用一个变量的值作为这个变量的名称.在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样.  代码如下 复制代码     <?php     $$a = 'world';     ?> 通过上面的两个语句,有两个变量被定义:

ASP中轻松实现变量名-值变换

变量 用过PHP的朋友都知道,PHP中变量的使用灵活方便,特别是能在字符串中方便实现变量名-值变换,使得整个PHP代码更显简洁优美.比如一条更新数据库的SQL语句只需写成:"update users set password='$password', group=$group, name='$username' where account='$account'",其中的$password.$group.$username.$account便会被实际的变量值替换,而在ASP中要实现相同的

用java类中的映射获取变量名

在类中定义了一个属性abc,如何获取这个变量的abc的名字串呢?也就是说怎么知道 abc这个变量的名字是abc,这个问题比较的好玩. 这个是偶在一开发中遇到的一个比较有趣的问题,找 了半天的资料加下偶辛勤的思考 ,终于找到的解决方法.用反射--- java提供了很强大的反射机制,可以说比动态语言还动态.但是这个东东平时的应用 不是很多的说. 现提供一个可以动态获取对象中的变量的变量名称的bt方法: public class MyTools { public static void setAllC

请问c语言中,int a=0;变量名a和数值是怎么在内存分配的

问题描述 请问c语言中,int a=0;变量名a和数值是怎么在内存分配的 我看了很多答案,有些说只分配一个内存存0,a被隐藏了那么这个隐藏又是怎么个隐藏法呢还有说a和0同时存着不懂,求指教 解决方案 每次我们要使用某变量时都要事先这样声明它,它其实是内存中申请了一个名为i的整型变量宽度的空间(DOS下的16位编程中其宽度为2个字节),和一个名为a的字符型变量宽度的空间(占1个字节).i在内存起始地址为6上申请了两个字节的空间(我这里假设了int的宽度为16位,不同系统中int的宽度可能是不一样的

Eclipse导入工程改工程名,改文件(类)名,改变量名---改名全集

一.项目改名字 ,原来的项目叫dzjckk,改名为dzjckkabcd 1,改项目的文件夹名,这不用说了吧 2,改项目文件夹下的.mymetadata文件中的 <project-module   type="WEB"   name="dzjckkabcd"   id="myeclipse.1203910672417"   context-root="/dzjckkabcd"   j2ee-spec="1.4&q

myeclipse中的自动提示问题!每次变量名后面都追加字符!

问题描述 myeclipse中的自动提示问题!每次变量名后面都追加字符! 设置了MyEclipse中的自动提示后,每次我定义String类型的变量,变量后面都追加String, 比如我定义了一个String name,追加过后就是nameString,每次都要手动删掉,烦死人了,请问有什么方法解决这一个自动提示追加变量名的问题!! 解决方案 关闭提示吧,用的多了会产生惯性,自己就不知道怎么写代码了. 解决方案二: 我也遇到这个问题,很郁闷不懂咋解决!!希望有大神可以说一块,我用的环境是,myEc

linux编程-简单makefile,函数名以变量引用怎么就不行了呢?

问题描述 简单makefile,函数名以变量引用怎么就不行了呢? line 8里面以$(func)引用sort函数,没效果,直接以sort替换$(func),是OK,什么情况? makefile 1 do_sort= 2 ifdef do_sort 3 func=strip 4 else 5 func=sort 6 endif 7 bar:=cd g p b a 8 foo=$($(func) $(bar)) 9 all: 10 @echo $(foo) 11 @echo $(sort $(ba