就是一个宏
#define COM_INTERFACE_ENTRY(x)\
{&_ATL_IIDOF(x), \
offsetofclass(x, _ComMapClass), \
_ATL_SIMPLEMAPENTRY},

解决方案 »

  1.   


    我说的是小写的com_interface_entry,类似下面这样,在一个.h文件里面,定义了一个coclass,其属性的部分使用了我说的这个com_interface_entry来包装大写的宏COM_INTERFACE_ENTRY。[
            coclass,
            ... ...
    com_interface_entry( "COM_INTERFACE_ENTRY(IMoniker)" ),
    com_interface_entry( "COM_INTERFACE_ENTRY(IPersist)" ),
    com_interface_entry( "COM_INTERFACE_ENTRY(IPersistStream)" ),
    com_interface_entry( "COM_INTERFACE_ENTRY(IParseDisplayName)" ),
    com_interface_entry( "COM_INTERFACE_ENTRY(IROTData)" ),
    com_interface_entry( "COM_INTERFACE_ENTRY(IMarshal)" )
    ]
    class ATL_NO_VTABLE my : public CComMoniker...
    因此我才会发这个帖子,这个小写的东东到底是个什么? 它放在属性段里面有什么作用?
      

  2.   

    我的系统找不到小写的com_interface_entry
    估计也是你引用的的某个,h中定义的宏
      

  3.   

    这是属性化编程中的关键字,只被IDL编译器识别。IDL编译器会收集这些属性,然后生成中间的源代码,生成的内容跟大写的宏是完全一致的,平时看不到这些中间代码,但是单步调试是能看到的。属性化编程是一个鸡肋,VC2005之后的版本已经不推荐使用了。
      

  4.   


    我google或者baidu,搜索"属性化编程",找不到什么有用的信息。它英文叫什么呢?
    我现在维护的一个工程就是大量使用了这种技术的老产品。我想找点网页资料学习一下这种用法,能给点中英文资料的链接吗?
    多谢。
      

  5.   

    属性化编程怎么会搜索不到呢?度娘一下一大堆,就是ATL属性化编程,它的目的很简单,就是把IDL文件合并到CPP文件里,不用单独写IDL,表面看节省了程序员时间,可读性更好,但其实弊病非常多,这也是官方抛弃它的原因。官方资料现在是找不到的,因为MS已经不推荐这种用法了,但是如果你安装了VS2005,你可以在它的MSDN里找到官方文档,但是之后的版本全取消了。