This documentation is archived and is not being maintained.

Specifiers

This section explains the decl-specifiers portion of declarations. (The syntax for declarations is given at the beginning of this section.)

The following are declaration specifiers:

storage-class-specifier 
type-specifier 
function-specifier 
friend 
typedef 
__declspec ( extended-decl-modifier-seq )

The Microsoft-specific keyword, __declspec, is discussed in Extended Attribute Syntax.

The decl-specifiers portion of a declaration is the longest sequence of decl-specifiers that can be construed to be a type name, not including the pointer or reference modifiers. The remainder of the declaration is the declarator, including the name introduced. The examples in the following list illustrates this concept:

Declaration

decl-specifiers

declarator

char *lpszAppName;
char
*lpszAppName
typedef char * LPSTR;
char
*LPSTR
const int func1();
const int
func1
volatile void *pvvObj;
volatile void
*pvvObj

Because signed, unsigned, long, and short all imply int, a typedef name following one of these keywords is taken to be a member of declarator-list, not of decl-specifiers.

NoteNote:

Because a name can be redeclared, its interpretation is subject to the most recent declaration in the current scope. Redeclaration can affect how names are interpreted by the compiler, particularly typedef names.

Show: