Random thoughts and musings. Part of an oliology.

oliology.diary

Donnerstag, Juni 24, 2004

Strange macros in the Adobe SDK
Seltsame Makros im Adobe-SDK

In many places in the Adobe SDK function definitions like this can be found:

static ACCB1 ASBool ACCB2 WordCounterProc (...) {...}

Usually functions are allowed to have only one return value (in this case ASBool … and yes, I know that more return variables can be passed as arguments). After a lengthy search (Visual C++ 6.0 ist stone age compared to 2.1) I have been able to find out that these are platform-specific macros that seen to necessary for each funtion definition.

From WinPltfm.h:

#ifdef _WIN32
#define ACROCALLBACK
#define ACCB2
#else
#define ACROCALLBACK    __loadds
#define ACCB2           __loadds
#endif
#define ACCB1

And the corresponding piece of code from MacPlatform.h:

#define ACCB1 pascal
#define ACCB2

In the same file, there is a nice paragraph:

/*
//	I have no idea why this code was here in the first place,
//	since I can't figure out what it could ever do.  But I've
//	left it in in case someone far smarter than I can see a use
//	for it.

#if DEBUG
 	#ifndef DEBUG
 		#define DEBUG 1
 	#endif
#endif
*/

An sehr vielen Stellen im Adobe-SDK tauche Funktionsdefinitionen wie diese auf:

static ACCB1 ASBool ACCB2 WordCounterProc (...) {...}

Dabei dürfen Funktionen nur einen Rückgabewert haben (in diesem Fall also ASBool … und ja, ich weiß, dass man als Argumente noch weitere Rückgabewerte übergeben kann). Nach längerer Suche (Visual C++ 6.0 ist Steinzeit verglichen mit Eclipse 2.1) habe ich herausfinden können, dass das plattformspezifische Makros sind, die bei offenbar jeder Funktionsdefinition auftauchen müssen.

Aus WinPltfm.h:

#ifdef _WIN32
#define ACROCALLBACK
#define ACCB2
#else
#define ACROCALLBACK    __loadds
#define ACCB2           __loadds
#endif
#define ACCB1

Und die gleiche Stelle aus MacPlatform.h:

#define ACCB1 pascal
#define ACCB2

In derselben Datei findet sich auch noch eine nette Stelle:

/*
//	I have no idea why this code was here in the first place,
//	since I can't figure out what it could ever do.  But I've
//	left it in in case someone far smarter than I can see a use
//	for it.

#if DEBUG
 	#ifndef DEBUG
 		#define DEBUG 1
 	#endif
#endif
*/

Oliver @ 18:05 | Permalink | 0 comments/Kommentare

|

Kommentar veröffentlichen

Good people

Good Software

Archive