#import指令常用属性解释

#import指令常用属性解释
比如我们常用代码里面会涉及renamesapce no_namespace rename等,但你知道有啥用吗?比如如下代码片段

#import "c:\Program Files\Common Files\System\ado\msado15.dll"\
    rename_namespace("AdoDB")\
    rename("EOF","adoEOF")

通过测试工程认识和熟悉其用法

  1. no_namespace

    
    #import "import_include/ado/x86/msado15.dll"
    
    
    #import "import_include/ado/x86/msado15.dll" \
    
        no_namespace 

    msdn有提到:Specifies that the namespace name is not generated by the compiler. 对比生成的msado15.tlh,发现使用no_namespace,无ADODB命名空间定义。

    // C++ source equivalent of Win32 type library .\import_include/ado/x86/msado15.dll
    // compiler-generated file created 12/04/16 at 19:07:38 - DO NOT EDIT!
    
    
    #pragma once
    
    
    #pragma pack(push, 8)
    
    
    
    #include <comdef.h>
    
    
    namespace ADODB {
    ......
    
    #include "C:\Users\AppData\Local\Temp\msado15.tli"
    
    } // namespace ADODB
    
    
    #pragma pack(pop)
    
  2. renamespace

    
    #import "import_include/ado/x86/msado15.dll" \
    
    rename_namespace("ADODB_NEW")

    对比tlh文件,可以看到命名空间变化如下

    namespace ADODB_NEW {
  3. rename
    msdn “Works around name collision problems.” 解决冲突时使用。
    测试代码:

    
    #import "import_include/ado/x86/msado15.dll" \
    
        rename("EOF","EOF_NEW")

    生成的tlh文件差异

    __declspec(property(get=GetEOF))
    VARIANT_BOOL EOF;
    __declspec(property(get=GetEOF_NEW))
    VARIANT_BOOL EOF_NEW;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值