COM中的若干问题

时间:2021-11-03 20:02:19
我有两个问题,比如我定义了一堆宏。
#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


引用 1 楼  的回复:
1.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件

2.返回一个错误值不行吗?


----------------------

同意楼上

#3


引用 1 楼  的回复:
1.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件

2.返回一个错误值不行吗?

1.我做二次开发的时候发现人家的.tlb中有他们定义的那些宏,所以为了省事,我也想导出这些宏而不是用头文件的方式,毕竟人家可能用其他语言调用我的组件的。
2.返回值另有用处的,我得将这些错误汇总到一个DLL中处理所以想用这种方式。

#4


没人回一下吗?

#5


你这不就是 throw了一个int值吗。catch(int i)不就行了

#6


 #1楼 得分:0回复于:2012-05-09 10:32:351.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件

2.返回一个错误值不行吗? 
 

#7


你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

#8


try
{
  throw 1;
}
catch(int &e)
{
  printf("%d \n",e);
}

#9


引用 7 楼  的回复:
你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。

#10


引用 8 楼  的回复:
try
{
  throw 1;
}
catch(int &e)
{
  printf("%d \n",e);
}

这不合理,#define里并没有数据类型,如果我#define是个浮点呢,我不想 throw int i = ERR_COM_...;

#11


引用 9 楼  的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

#12


引用 11 楼  的回复:
引用 9 楼  的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件

#13


引用 12 楼  的回复:
引用 11 楼 的回复:

引用 9 楼 的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件

那不还是一样么
你可以把宏写到tlb文件里啊

#14


引用 13 楼  的回复:
引用 12 楼  的回复:
引用 11 楼 的回复:

引用 9 楼 的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件

……

您的意思是自己改tlb文件?恩,我明白了

#1


1.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件

2.返回一个错误值不行吗?

#2


引用 1 楼  的回复:
1.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件

2.返回一个错误值不行吗?


----------------------

同意楼上

#3


引用 1 楼  的回复:
1.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件

2.返回一个错误值不行吗?

1.我做二次开发的时候发现人家的.tlb中有他们定义的那些宏,所以为了省事,我也想导出这些宏而不是用头文件的方式,毕竟人家可能用其他语言调用我的组件的。
2.返回值另有用处的,我得将这些错误汇总到一个DLL中处理所以想用这种方式。

#4


没人回一下吗?

#5


你这不就是 throw了一个int值吗。catch(int i)不就行了

#6


 #1楼 得分:0回复于:2012-05-09 10:32:351.直接在一个头文件里定义这些宏,不用导出,其它工程需要这些宏时,包含这个头文件

2.返回一个错误值不行吗? 
 

#7


你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

#8


try
{
  throw 1;
}
catch(int &e)
{
  printf("%d \n",e);
}

#9


引用 7 楼  的回复:
你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。

#10


引用 8 楼  的回复:
try
{
  throw 1;
}
catch(int &e)
{
  printf("%d \n",e);
}

这不合理,#define里并没有数据类型,如果我#define是个浮点呢,我不想 throw int i = ERR_COM_...;

#11


引用 9 楼  的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

#12


引用 11 楼  的回复:
引用 9 楼  的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件

#13


引用 12 楼  的回复:
引用 11 楼 的回复:

引用 9 楼 的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件

那不还是一样么
你可以把宏写到tlb文件里啊

#14


引用 13 楼  的回复:
引用 12 楼  的回复:
引用 11 楼 的回复:

引用 9 楼 的回复:
引用 7 楼 的回复:

你这些宏就是整数
无所谓导出不导出
给个说明文件使用时自己定义即可

我只是想知道,别人是怎么实现导出这些宏的,因为我二次开发的时候有人实现了。
你的意思是说你曾经通过接口调用宏?

不是调用宏,他们的.tlb文件中直接有这些宏定义,不用我另外去写.h头文件

……

您的意思是自己改tlb文件?恩,我明白了