#include in Makro
-
Hi.
Ist es möglich (in Visual Studio 2008, also mit dem VC++ Compiler) es irgendwie hinzukriegen, in ein Makro eine Include-Anweisung zu packen?Beispiel:
#define bla(x) \ #include <Headers/##x.hpp> mach_was(); \Gruß
-
Soweit ich weiß nicht, warum sollte man das schreiben? o0
:xmas1: :xmas2:
-
Hi.
Schade, trotzdem danke
Es geht mir darum, dass ich für jedes Modul in meinem Projekt gerne einen Eintrag in einer globalen Includedatei machen würde, der so oder ähnlich aussieht:INC_AND_INIT(Modulename);Wenn das mit dem #include nicht geht, müsste ich immer
#include <Headers/Modulename.hpp> INIT(Modulename);schreiben, und das ist auf dauer etwas nervig

Edit: Ah, ein VALVe Programmierbar

Gruß
-
theliquidwave schrieb:
Edit: Ah, ein VALVe Programmierbar
Das glaube ich ihm erst, wenn ich es sehe.
-
Hi.
Das war nicht darauf bezogen, dass er bei VALVe arbeitet, sondern dass er etwas mit deren Produkte zu tun hat (ich vermute mal die HL1 Engine oder Source Engine) - wegen seiner Signatur
Gruß
-
Ja, ich bin toll

-
theliquidwave schrieb:
Hi.
sondern dass er etwas mit deren Produkte zu tun hat (ich vermute mal die HL1 Engine oder Source Engine) - wegen seiner Signatur
Auch das glaube ich erst wenn ich es sehe.
Quasti ist ein Angeber.
-
Wenn dich das "<headers/" so stört, dann füge diesen header-Pfad doch zu den nach Headerdateien zu durchsuchenden Pfaden hinzu. Dann schreibst du nur noch
<modulname.hpp>
Eine weitere Alternative bestände im klassischen C&P.
Daneben kann ich es mir nur schwer vorstellen, dass man regelmäßig so häufig Header einbinden muss, als das man dies wirklich als nervig bezeichnen kann
.
-
hustbaer schrieb:
Quasti ist ein Angeber.
Falls das an mich gerichtet war: Ich weiß ja das du mich nicht besonders magst, warum auch immer, aber warum versuchst du mich dauernd runterzumachen? Ahja, den Link habe ich dadrin weil ich Fan von Valve's Produkten bin und die developer-Seite hier ganz gut reinpasst(e).
-
hustbaer und Kóyaánasqatsi, es wäre nett wenn ihr eure Differenzen an anderer Stelle klären könntet.
@Topic: mir erscheint es etwas fragwürdig, was du da machen willst. Zum einen kann man die mach_was()-Funktion eh nicht im globalen Namensraum einfach so aufrufen. Zum anderen ist das recht seltsam wenn du du mehrere deiner Module mit dem selben Befehl initialisieren musst und das außerhalb des Modulheaders. Wenn du eine Initialisierung pro Übersetzungseinheit in deinem Projekt brauchst dann pack den entsprechendend Code in den Header des Moduls. Wenns nur einmal im ganzen Programm sein soll dann packs in die .cpp-Datei(en) des Moduls. Das von den Klienten des Moduls zu erwarten ist in 95% der Fälle schlechter Stil.
-
-
Kóyaánasqatsi schrieb:
...warum auch immer...
Das Problem ist, dass du ab und zu ziemlich unfreundlich wirkst und selbst den grossen Kenner raushängst, ohne viel von einer Sache zu verstehen.
Wäre wirklich nett, wenn du dich etwas darauf achten könntest. Ich bin sicher, dann wirst du auch nicht mehr von anderen Leuten doof angemacht.
-
@theliquidwave:
Zum Thema: Das Initialisieren von Modulen ist meist noch relativ einfach (*).
Kann man z.B. über folgenden Trick machen:// Header "module1.hpp": namespace module1 { int Init(); namespace { #ifndef COMPILING_MODULE1 extern int volatile g_initDummy = ::module1::Init(); #endif // Alternative: struct InitHelper { InitHelper() { ::module1::Init(); } }; InitHelper g_initHelper; } // namespace } // namespace module1Und natürlich kann man auch oft die Initialisierung erst zu dem Zeitpunkt machen, wo die 1. Funktion des Moduls verwendet wird. Dazu bietet sich z.B. boost::call_once an (aus der Thread-Library).
EDIT: *: der schwierigere Teil ist IMO, einen geeigneten Zeitpunkt zum Aufräumen zu finden, falls es irgendwas gibt was aufgeräumt werden soll/muss.