Citation:
Because of infelicities in the grammar for attributes, some forms described here may not be successfully parsed in all cases. There are some problems with the semantics of attributes in C++. For example, there are no manglings for attributes, although they may affect code generation, so problems may arise when attributed types are used in conjunction with templates or overloading. Similarly, typeid does not distinguish between types with different attributes. Support for attributes in C++ may be restricted in future to attributes on declarations only, but not on nested declarators.
(si cette page du manuel est fraiche, notre Mark Mitchell national n'avait pas tort..)
Citation:
stdcallOn the Intel 386, the stdcall attribute causes the compiler to assume that the called function will pop off the stack space used to pass arguments, unless it takes a variable number of arguments.
Voilà. C'est une extension du ISO C. Ces extensions existent dans C (pré-standard) et C-Objective. La plupart ont été intégrées dans C++ (en particulier stdcall est standard sous ISO C++ - ISO-IEC 14882). Donc pas de violation de la syntaxe du C, ça en fait tout simplement pas partie, c'est une extension :)