【第22期】观点:IT 行业加班,到底有没有价值?

Microsoft Specific

原创 2006年06月15日 00:50:00

The extended attribute syntax for specifying storage-class information uses the __declspec keyword, which specifies that an instance of a given type is to be stored with a Microsoft-specific storage-class attribute listed below. Examples of other storage-class modifiers include the static and extern keywords. However, these keywords are part of the ANSI specification of the C and C++ languages, and as such are not covered by extended attribute syntax. The extended attribute syntax simplifies and standardizes Microsoft-specific extensions to the C and C++ languages.

This is the extended attribute grammar for C++:

Grammar

decl-specifier :
__declspec ( extended-decl-modifier-seq )
extended-decl-modifier-seq :
extended-decl-modifieropt
extended-decl-modifier extended-decl-modifier-seq
extended-decl-modifier :
align(#)
allocate("segname")
deprecated
dllimport
dllexport
naked
noinline
noreturn
nothrow
novtable
property({get=get_func_name|, put=put_func_name})
selectany
thread
uuid("ComObjectGUID")

White space separates the declaration modifier sequence. Examples appear in later sections.

Extended attribute grammar supports these Microsoft-specific storage-class attributes: align, allocate, deprecated, dllexport, dllimport, naked, noinline, noreturn, nothrow, novtable, selectany, and thread. It also supports these COM-object attributes: property and uuid.

The thread, naked, dllimport, dllexport, nothrow, property, selectany, and uuid storage-class attributes are properties only of the declaration of the object or function to which they are applied. The thread attribute affects data and objects only. The naked attribute affects functions only. The dllimport and dllexport attributes affect functions, data, and objects. The property, selectany, and uuid attributes affect COM objects.

The __declspec keywords should be placed at the beginning of a simple declaration. The compiler ignores, without warning, any __declspec keywords placed after * or & and in front of the variable identifier in a declaration.

A __declspec attribute specified in the beginning of a user-defined type declaration applies to the variable of that type. For example:

__declspec(dllimport) class X {} varX;

In this case, the attribute applies to varX. A __declspec attribute placed after the class or struct keyword applies to the user-defined type. For example:

class __declspec(dllimport) X {};

In this case, the attribute applies to X.

The general guideline for using the __declspec attribute for simple declarations is as follows:

decl-specifier-seq init-declarator-list;

The decl-specifier-seq should contain, among other things, a base type (e.g. int, float, a typedef, or a class name), a storage class (e.g. static, extern), or the __declspec extension. The init-declarator-list should contain, among other things, the pointer part of declarations. For example:

__declspec(selectany) int * pi1 = 0;   //OK, selectany & int both part of decl-specifier
int __declspec(selectany) * pi2 = 0;   //OK, selectany & int both part of decl-specifier
int * __declspec(selectany) pi3 = 0;   //ERROR, selectany is not part of a declarator

The following code declares an integer thread local variable and initializes it with a value:

// Example of the __declspec keyword
__declspec( thread ) int tls_i = 1;

END Microsoft Specific

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Using Microsoft-Specific Predefined Preprocessor Macros

Using Microsoft-Specific Predefined Preprocessor MacrosA sample function that uses ANSI-Compliant Pr...

Build, Install, Configure and Run Apache Hadoop 2.2.0 in Microsoft Windows OS

http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os
  • nlslzf
  • nlslzf
  • 2013-12-09 11:17
  • 1590

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Error = [Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has o

今天执行bcp命令,将查询结果生成一个excel文件放在本地

Microsoft Windows Vista Security Advancements

Introduction <p cla

C++ Microsoft-Specific Modifiers - C++ 微软特殊修饰符(__asm/__based/__cdecl/__declspec/__fastcall/__stdcall/dllImport/dllExport/C++ 内嵌汇

收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)