2012-07-23 9 views
7

Mientras código me encontré con una clase que tiene 2 identificadores de nombres 'es la lectura:¿Una clase con 2 nombres?

class A_EXP Node 
{ 
//.. 
}; 

no soy capaz de entender lo que esto significa. podria alguien ayudarme?

+8

El 'A_EXP' es probablemente una macro decorador de algún tipo - es probable que se expande hasta cierto constructo su compilador (controles de visibilidad?) En algunas circunstancias, y para nada bajo otros. –

+0

'A_EXP' podría ser una definición para' __dllspec (dllexport) ' –

+0

Supongo que se expande a' __declspec (dllexport) 'o' __declspec (dllimport) 'dependiendo del escenario. – tmpearce

Respuesta

12

A_EXP es probablemente un macro, posiblemente expandiéndose a nada en absoluto. También se puede expandir a una declaración __declspec o similar, que modifica cómo el compilador emitirá la clase como código objeto. Un uso común de este patrón sería:

#define A_EXP __declspec(dllexport) 
+1

"..en el mundo de MSVC". –

+1

Es completamente legal en cualquier compilador que la macro se expanda a nada. – cdhowie

Cuestiones relacionadas