Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 |
SCRIPT_DEFINE_FUNC_1(returnTyp, func, parameter1) |
C-/C++-Quelltext |
|
1 2 3 4 5 |
static std::string __stdcall Bla(int alX) { return "Hallo"; } SCRIPT_DEFINE_FUNC_1(string, Bla, int) |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#define SCRIPT_DEFINE_FUNC_1(return, funcname, arg0) \ SCRIPT_FUNC_BEGIN(funcname, return, #arg0) \ SCRIPT_ARG_##arg0(0); \ SCRIPT_RETURN_CALL_##return funcname(_arg0); \ SCRIPT_FUNC_END(funcname,return) #define SCRIPT_FUNC_BEGIN(funcname, return, args) \ namespace GenericScript { \ static std::string funcname##_return = #return; \ static std::string funcname##_arg = args; \ void funcname##_Generic(asIScriptGeneric *gen) { \ SCRIPT_RETURN_##return; #define SCRIPT_FUNC_END(funcname, return) \ SCRIPT_SET_RETURN_##return; \ } \ } #define SCRIPT_ARG_string(n) std::string _arg##n = *(std::string *)gen->GetArgObject(n) #define SCRIPT_ARG_float(n) float _arg##n = gen->GetArgFloat(n) #define SCRIPT_ARG_int(n) int _arg##n = gen->GetArgDWord(n) #define SCRIPT_ARG_bool(n) bool _arg##n = gen->GetArgDWord(n) #define SCRIPT_RETURN_CALL_string _ret = #define SCRIPT_RETURN_CALL_bool _ret = #define SCRIPT_RETURN_CALL_int _ret = #define SCRIPT_RETURN_CALL_float _ret = #define SCRIPT_RETURN_CALL_void |
C-/C++-Quelltext |
|
1 |
RegisterFunction("void FuncNameInScript(int iTyp)", FuncToCall);
|
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
C-/C++-Quelltext |
|
1 |
SCRIPT_ARG_##arg0(0);
|
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »FSA« (30.05.2013, 13:18)
Ich meinte mit dem definieren nicht #define, sondern, dass das Makro einfach das einfach angibtZitat
@wluc-16: Wie soll die gerade definierte Funktion etwas definieren?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#define DEFINE_SCRIPT_ENGINE(SE) \ ScriptEngine* SEE = SE; #define SCRIPT_DEFINE_FUNC_1(return, func, arg0) \ string sFinal; \ string s1,s2,s3,s4,s5,s6; \ s1 = #return; \ s2 = " "; \ s3 = #func; \ s4 = "("; \ s5 = #arg0; \ s6 = ")"; \ sFinal = s1 + s2 + s3 + s4 + s5 + s6; \ SEE->RegisterFunction(sFinal.c_str(), func) |
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
Quellcode |
|
1 2 3 4 5 |
#return #func #arg0 |
Zitat von »http://public.beuth-hochschule.de/~kempfer/skript_c/Kap10.html«
Der #-Operator ist ein unärer Präprozessor-Operator und wird in Makros verwendet. Während das Makro umgesetzt wird, wird der #-Operator mit dem dahinter stehenden Makro-Parameter ersetzt durch den aktuellen Wert des Makro-Parameters eingeschlossen in Anführungszeichen. Dadurch wird der Wert des Makro-Parameters, der hinter dem Operator steht, in eine Zeichenkette umgewandelt, egal um was für einen Datentypen es sich handelt. Während die Zeichenkette erzeugt wird, werden mehrere hintereinander stehende Weiße Leerzeichen ersetzt durch ein Leerzeichen. Anführungszeichen und Backslashs, die im Makro-Parameter enthalten sind, bekommen noch ein zusätzliches Backslash davor gesetzt, damit die ursprüngliche Bedeutung erhalten bleibt.
Beispiel:
#define Makro(a) printf(#a)
Beim Durchlauf des Präprozessors werden die Makroaufrufe
Makro(7);
Makro("\n");
werden ersetzt durch
printf("7");
printf("\"\\n\"");
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
Werbeanzeige