2012-07-23 6 views
7

Beim Lesen Code ich auf eine Klasse kam, die zwei Kennungen hat ‚es Namensgebung‘:Eine Klasse mit 2 Namen?

class A_EXP Node 
{ 
//.. 
}; 

Ich bin zu verstehen, nicht in der Lage, was das bedeutet. Könnte mir jemand helfen?

+8

Die 'A_EXP' ist wahrscheinlich ein Dekorateur Makro von einer Art - es dehnt sich wahrscheinlich bis zu einem gewissen Compiler spezifische Konstrukt (Sichtbarkeit Kontrollen?) Unter bestimmten Umständen und zu nichts unter Andere. –

+0

'A_EXP' könnte eine Definition für' __dllspec (dllexport) ' –

+0

sein. Ich vermute, dass es je nach Szenario zu' __declspec (dllexport) 'oder' __declspec (dllimport) 'expandiert. – tmpearce

Antwort

12

A_EXP ist wahrscheinlich ein Makro, möglicherweise zu nichts erweitert. Es kann auch zu einer __declspec oder ähnlichen Deklaration erweitert werden, die ändert, wie der Compiler die Klasse als Objektcode ausgibt. Eine häufige Verwendung dieses Musters wäre:

#define A_EXP __declspec(dllexport) 
+1

"..in der MSVC Welt." –

+1

In jedem Compiler ist es völlig legal, dass das Makro auf nichts erweitert wird. – cdhowie

Verwandte Themen