#define COM_ERR_BASE 0xffff0000
//内存类错误
#define COM_ERR_MEMORY COM_ERR_BASE + 1000
#define COM_ERR_MEMORY_NULL COM_ERR_MEMORY + 1 //内存为空
#define COM_ERR_MEMORY_ERR COM_ERR_MEMORY + 2 //内存错误
....
我在COM中如何导出这些宏呢,(我看人家TLB里面似乎行的啊)
第二个是比如
try
{
if(FunA())
throw COM_ERR_USER;
if(FunB())
throw COM_ERR_FUNDEF;
}
//我怎么写catch获得这些throw的值呢?COM_ERR_USER等都是宏,与上面的宏定义类似。
14 个解决方案
#1
1.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件
2.返回一个错误值不行吗?
2.返回一个错误值不行吗?
#2
----------------------
同意楼上
#3
1.我做二次开发的时候发现人家的.tlb中有他们定义的那些宏,所以为了省事,我也想导出这些宏而不是用头文件的方式,毕竟人家可能用其他语言调用我的组件的。
2.返回值另有用处的,我得将这些错误汇总到一个DLL中处理所以想用这种方式。
#4
没人回一下吗?
#5
你这不就是 throw了一个int值吗。catch(int i)不就行了
#6
#1楼 得分:0回复于:2012-05-09 10:32:351.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件
2.返回一个错误值不行吗?
2.返回一个错误值不行吗?
#7
你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可
无所谓导出不导出
给个说明文件使用时自己定义即可
#8
try
{
throw 1;
}
catch(int &e)
{
printf("%d \n",e);
}
{
throw 1;
}
catch(int &e)
{
printf("%d \n",e);
}
#9
我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
#10
这不合理,#define里并没有数据类型,如果我#define是个浮点呢,我不想 throw int i = ERR_COM_...;
#11
你的意思是说你曾经通过接口调用宏?
#12
不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件
#13
那不还是一样么
你可以把宏写到tlb文件里啊
#14
您的意思是自己改tlb文件?恩,我明白了
#1
1.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件
2.返回一个错误值不行吗?
2.返回一个错误值不行吗?
#2
----------------------
同意楼上
#3
1.我做二次开发的时候发现人家的.tlb中有他们定义的那些宏,所以为了省事,我也想导出这些宏而不是用头文件的方式,毕竟人家可能用其他语言调用我的组件的。
2.返回值另有用处的,我得将这些错误汇总到一个DLL中处理所以想用这种方式。
#4
没人回一下吗?
#5
你这不就是 throw了一个int值吗。catch(int i)不就行了
#6
#1楼 得分:0回复于:2012-05-09 10:32:351.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件
2.返回一个错误值不行吗?
2.返回一个错误值不行吗?
#7
你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可
无所谓导出不导出
给个说明文件使用时自己定义即可
#8
try
{
throw 1;
}
catch(int &e)
{
printf("%d \n",e);
}
{
throw 1;
}
catch(int &e)
{
printf("%d \n",e);
}
#9
我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
#10
这不合理,#define里并没有数据类型,如果我#define是个浮点呢,我不想 throw int i = ERR_COM_...;
#11
你的意思是说你曾经通过接口调用宏?
#12
不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件
#13
那不还是一样么
你可以把宏写到tlb文件里啊
#14
您的意思是自己改tlb文件?恩,我明白了