毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 报告 >> 正文

VC预处理命令 第5页

更新时间:2009-3-26:  来源:毕业论文
VC预处理命令 第5页的源区域中,结果PCH将被一些源文件所用。一个带implementation_only属性的#import语句随后被用在PCH区域之外。在一个源文件里只需用一次这种语句。这将生成不需对每个源文件进行额外重编译的所有必要的wrapper成员函数。
注意:一个#import语句中的implementation_only属性必须和相同类型库中no_implementation属性的另一个#import语句配套使用。否则,将产生编译错误。这是因为带no_implementation属性的#import语句生成的wrapper类定义需要编译implementation_only属性生成的语句实现。
include(...)属性
Include(名称1[,名称2,...])
名称1
第一个被强制包含的项
名称2
第二个被强制包含的项(如果必要)
类型库可能包含在系统头部或其它类型库中定义的项的定义。#import指令试图用自动排斥这些项来避免多重定义错误。若这些项已经被排斥,象警告C4192所指出的那样,且它们不应该被排斥,则这个属性可用于禁止自动排斥。该属性可带任意数目的参量,每个参量应是被包括的类型库项的名称。
inject_statement属性
inject_statement("source_text")
source_text
被插入到类型库头文件的源文本。
inject_statement属性将其参量作为源文本插入类型库头部。此文本被置于包括头文件中类型库内容的名称空间说明的起始处。
named_guids属性
named_guids属性让编译器定义和初始化模板LIBID_MyLib、CLSID_MyCoClass、IID_MyInterface和DIID_MyDispInterface的旧式格式的GUID变量。
no_implementation属性
该属性阻止.TLI头文件的生成,这个文件包含wrapper成员函数的实现。如果指定这个属性,则展示类型库项说明的.TLH头将生成没有一个#i nclude语句包括该.TLI头文件。
该属性与implementation_only属性配套使用。
no_auto_exclude属性
类型库可能包括在系统头部或其它类型库中定义的项的定义。#import试图通过自动排斥这些项来避免多重定义错误。当这样做时,每个被排斥的项都将生成一个C4192警告信息。你可禁止这个属性使用自动排斥。
no_namespace属性
#import头文件中的类型库内容一般定义在一个名称空间里。名称空间的名称在原来IDL文件的library语句中指定。如果指定no_namespace属性,编译器就不会生成这个名称空间。
如果你想使用一个不同的名称空间,应代替使用rename_namespace属性。
raw_dispinterfaces属性
raw_dispinterfaces属性让编译器生成一个低级wrapper函数。该函数用于调用IDispatch::Invoke和返回HRESULT错误代码的dispinterface方法和属性。如果未指定此属性,则只生成高级wrapper,它在失败时丢弃该C++异常。
raw_interfaces_only属性
raw_interfaces_only属性禁止生成错误处理wrapper函数以及使用这些wrapper函数的_ _declspec(属性)说明。
raw_interfaces_only属性也导致删除在命名non__property函数中的缺省前缀。通常该前缀是raw_。若指定此属性,函数名称将直接从类型库中生成。该属性只允许展示类型库的低级内容。
raw_method_prefix属性
raw_method_prefix("Prefix")
Prefix
被使用的前缀
用raw_作为缺省前缀的成员函数展示低层属性和方法,以避免与高级错误处理成员函数的名称冲突。raw_method_prefix属性用于指定一个不同的前缀。注意: raw_method_prefix属性的效果不会因raw_method_prefix属性的存在而改变。在说明一个前缀时,raw_method_prefix总是优先于raw_interfaces_only。若两种属性用在同一个#import语句中时,则采用raw_method_prefix指定的前缀。
raw_native_types属性
在缺省情况下,高级错误处理方法在BSTR和VARIANT数据类型和原始COM界面指针的地方使用COM支持类_bctr_t和_variant_t。这些类封装了分配和取消分配这些数据类型的存储器存储的细节,并且极大地简化了类型造型和转换操作。raw_native_types属性在高级wrapper函数中禁止使用这些COM支持类,并强制替换使用低级数据类型。
raw_property_prefix属性
raw_property_prefix("GetPrefix","PutPrefix","PutRefPrefix")
GetPrefix
用于propget方法的前缀
PutPrefix
用于propput方法的前缀
PutRefPrefix
用于propputref方法的前缀
在缺省情况下,低级方法propget、propput和propputref分别用后缀为get_、put_和putref_的成员函数来展示。这些前缀与MIDL生成的头文件中的名称是兼容的。raw_property_prefixes属性分别用于说明这三个属性方法的前缀。
rename属性
rename("OldName,""NewName")
OldName
类型库中的旧名
NewName
用于替换旧名的名称
rename属性用于解决名称冲突的问题。若该属性被指定,编译器将在类型库中的OldName的所有出现处用结果头文件中用户提供的NewName替换。
此属性用于类型库中的一个名称和系统头文件中的宏定义重合时。若这种情况未被解决,则将产生大量语法错误,如C2059和C2061。
注意:这种替换用于类型库的名称,而不是用于结果头文件中的名称。
这里有一个例子:假设类型库中有一个名称为MyParent的属性,且头文件中定义了一个用在#import之前的宏GetMyParent。由于GetMyParent是用于错误处理属性get的一个wrapper函数的缺省名称,所以将产生一个名称冲突。为解决这个问题,使用#import语句中的以下属性:
rename("MyParent","MyParentX")
该语句将重新命名类型库中的名称MyParent,而试图重新命名GetMyParentwrapper名称将会出错:
rename("GetMyParent","GetMyParentX")
这是因为名称GetMyParent只出现在结果类型库头文件中。
rename_namespace属性
rename_namespace("NewName")
NewName
名称空间的新名称
rename_namespace属性用于重新命名包含类型库内容的名称空间。它带有一个指定名称空间新名newname的参量。
消除名称空间可以使用no_namespace属性。
C++特殊处结束
#i nclude指令
#i nclude指令告诉预处理器处理一个指定文件的内容,就象这些内容以前就在这条指令出现的源程序中。你可以把常量和宏定义放在包含文件中,然后用#i nclude指令把这些定义加到任何源文件中。包含文件对于外部变量和复杂数据类型结合的说明也是有用的。
你只需在为此目的创建的一个包含文件中定义和命名这些类型一次。
语法
#i nclude "path-spec"

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 下一页

VC预处理命令 第5页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。