Atributos de classe de armazenamento estendido C
Seção específica da Microsoft
Mais informações atualizadas sobre atributos de classe de armazenamento podem ser encontradas em __declspec
(referência C++).
A sintaxe de atributo estendido simplifica e padroniza as extensões específicas da Microsoft para a linguagem C. Os atributos de classe de armazenamento que usam a sintaxe de atributo estendido incluem thread
, naked
, dllimport
e dllexport
.
A sintaxe de atributo estendido para a especificação de informações de classe de armazenamento usa a palavra-chave __declspec
, que especifica que uma instância de um determinado tipo deve ser armazenada com um atributo de classe de armazenamento específico (thread
, naked
, dllimport
ou dllexport
). Exemplos de outros modificadores de classe de armazenamento incluem as palavras-chave static
e extern
. No entanto, essas palavras-chave fazem parte do padrão ISO C e não são abrangidas pela sintaxe de atributo estendido.
Sintaxe
storage-class-specifier
:
__declspec (
extended-decl-modifier-seq
)
/* Específico da Microsoft */
extended-decl-modifier-seq
: /* Específico da Microsoft */
extended-decl-modifier
opt
extended-decl-modifier-seq
extended-decl-modifier
extended-decl-modifier
: /* Específico da Microsoft */
thread
naked
dllimport
dllexport
O espaço em branco separa os modificadores de declaração. Um extended-decl-modifier-seq
pode estar vazio. Nesse caso, __declspec
não tem efeito.
Os atributos de classe de armazenamento thread
, naked
, dllimport
e dllexport
são propriedades somente da declaração dos dados ou da função aos quais são aplicadas. Eles não redefinem os atributos de tipo da função em si. O atributo thread
afeta somente dados. O atributo naked
afeta somente funções. Os atributos dllimport
e dllexport
afetam somente funções e dados.
Fim da seção específica da Microsoft