SUBSYSTEM
-
Hallo auch,
ich möchte ein Programm schreiben, dass in verschiedenen Subsystemen dementsprechende Variablen in eine Struktur einbindet bzw. dieser weglässt.
Im Klartext: Wenn ich ein Programm als \SUBSYSTEM:CONSOLE kompiliere, soll es Strukturen anders anlegen als wenn ich es mit \SUBSYSTEM:WINDOWS kompiliere. Bei mir sieht das bis jetzt so aus:`struct strTest {
int var1 ;
char var2 ;
#ifdef \SUBSYSTEM:WINDOWS
int var3 ;
#endif
} ;`
Hoffe, mir kann geholfen werden
-
und was genau ist deine Frage?
-
na wie ich es hinbekomm, dass eine Struktur verschiedene Felder hat, jenachdem mit welchem subsystem der code kompiliert wird
-
Offensichtlich benutzt du den Compiler von Microsoft, wirf doch mal einen Blick in die Doku oder deine Projekteinstellungen und schau dir an welche projekt-spezifischen #defines hierfür vorgesehen sind.
Es gibt einmal _WIN32 afaik und _CONSOLE (glaub ich), aber ich hab diesen gerade nicht zur Hand.
-
daersc schrieb:
na wie ich es hinbekomm, dass eine Struktur verschiedene Felder hat, jenachdem mit welchem subsystem der code kompiliert wird
das hast du aber dir selber beantwortet, mit dem #ifdef. Und beim Compilieren die entsprechende Makros (er)stellen.
-
also funktioniert das tatsächlich so?
is ja klasseich hielt das nur für nen groben entwurf...
-
du musst aber natürlich immer aufpassen, dass du die #ideef immer überall hast, wo es auf diese Member zugegriffen wird.
void bar(struct strTest *t) { printf("var1 = %d\nvar2 = %d\n", t->var1, t->var2); #ifdef \SUBSYSTEM:WINDOWS printf("Nur unter Subsystem Windows: var3 = %d\n", t->var3); #endif } void foo() { struct strTest test; test.var1 = 7; test.var2 = 8; ... #ifdef \SUBSYSTEM:WINDOWS test.var3 = test.var1 + test.var2; #endif bar(&test); }