Conditional compiling [Solved]
Übersicht

![]() |
Der EisvogelBetreff: Conditional compiling [Solved] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Leute
Es gibt ja die Möglichkeit bestimmte Code-Teile abhängig vom OS und Co zu compilen, also: BlitzMax: [AUSKLAPPEN] ?Linux Kann ich dass jetzt auch für mich selbst machen? Also ich habe ein Programm wovon ich eine Demo erstellen will, und eine Vollversion. Jetzt hat die Demo ein paar Funktionen weniger, kann ich das jetzt irgendwie anstellen, dass ich nur eine Zahl oder so ändern muss damit ich Vollversion oder Demo compilen kann? So würde ich mir das vorstellen: BlitzMax: [AUSKLAPPEN] Const VERSION:Int = 1 MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
- Zuletzt bearbeitet von Der Eisvogel am So, März 13, 2011 20:23, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da muss dir ein normales If genügen, die ?-Konditionen kann man nicht erweitern. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist aber, dass es dann sehr einfach ist, diese Funktionen in der Demo zu aktivieren. Genau das möchte ich verhindern, sodass die Funktionen gar nicht erst mit in das Programm reinkommen.
Gibt es da ne andere Möglichkeit? |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da Konstanten durch ihre Werte ersetzt werden, würde ich schätzen, dass das eher schwer geht. Hast du das schon mal ausprobiert? | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist eigentlich total einfach. Also ich habe die Kompilierte Exe. Daring stecken deaktivierte Funktionen. Diese weden eigentlich im Programm-Fluss nur mit einem "jmp" oder eine andere Befehl derart übersprungen. Wenn ich das entsprechende Code Stück überschreibe, dann kann man die Funktionen ohne weiteres verwenden, da sie ja dann nicht mehr übersprungen werden.
Und ja ich habe es schon ausprobiert, und ja es hat auch funktioniert. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann wird es am sichersten sein, die betroffenen Funktionen komplett aus zu kommentieren... | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Lord Stweccys |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, wie Eisvogel sich das vorstellt geht es.
Er hat bloß das Fragezeichen falsch benutzt. So funzt es: BlitzMax: [AUSKLAPPEN] Const VERSION:Int = 1 Mfg, LordSt |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt keinen Fehler - funktionieren tut's aber nicht. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mh, also bei mir geht es nicht. Es jetzt immer nur Print "0" ausgeführt, wie bekomme ich jetzt das Print "1" ausgeführt? | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Lord Stweccys |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mh, ich war mir sicher, dass das funktioniert. Hatte das sogar mal irgendwo gelesen. ô_O
Du könntest vielleicht einen Identifier verwenden, den du eh nicht brauchst, z.B. BlitzMax: [AUSKLAPPEN] ?Threaded für Demo-Version und BlitzMax: [AUSKLAPPEN] ?Not Threaded für Pro-Version. Das wäre das einzige, was noch plausibel wäre. (Ok, es ist auch nicht wirklich schön) |
||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, das ist leider wirklich nicht schön, da ich das Thread-Zeug nicht mit drin haben will. Was ich probiert habe ich noch im BMK eigene Flags reinzusetzten, aber das geht leider nicht. Ich denke dazu bräuchte ich den SOurce von dem "bcc.exe" Ding.
Alles immer auskommentieren zu müssen ich verdammt viel Arbeit und kann auch mal schiefgehen. Irgendwie muss das doch gehen. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Lord Stweccys |
![]() Antworten mit Zitat ![]() |
---|---|---|
Äh, ich vergaß zu erwähnen: Bei meiner Version MUSS Threading ausgeschaltet sein. | ||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was für eine Art von Features sind es denn?
Kann man diese mit Hilfe von OOP auskapseln? Dann hast du zwei verschiedene Feature-Klassen, wovon du bei jeder Programmversion nur die richtige importierst. -> Eine Zeile bestimmt, welche Version kompiliert wird. mfG mpmxyz PS: Threading muss ausgeschaltet sein? Nutzt du viele Objekte? |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Idee ansich ist gut, aber bei meinem Problem nicht machbar. Die Features die verschwinden sollen, können einzeilig sein, oder aber auch extrem lang. Sie befinden sich überall im Code verstreut. Die Zusammenzeihen geht, nicht da sie gegenseitig auf einander beruhen.
EDIT: So habs jetzt gelöst. Folgender Code funktioniert bei mir so wie ich es will: BlitzMax: [AUSKLAPPEN] ?setfullversion Ich hab am BMK noch eine weitere Funktion hinzugefügt, die meinen Source vorparst und dann erst and den richtigen BMK übergibt. Klappt Prima. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
Guamtmsou G. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Eisvogel hat Folgendes geschrieben: Ich hab am BMK noch eine weitere Funktion hinzugefügt, die meinen Source vorparst und dann erst and den richtigen BMK übergibt. Klappt Prima.
Have you changed "bmk_modutil.bmx" ??? i'm going crazy to do this "conditional compilation" can you help me?? Thx |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein If, welches nur auf eine konstante prüft, wird zur compile-zeit ausgewertet und entsprechender Code gar nicht assembliert. Es ist also unmöglich, den kram wieder rein zu hacken. | ||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, dass ist eigentlich genau das was ich hören wollte jedoch bin ich mir da nicht so sicher gewesen. Ist das irgendwo offiziel schriftlich festgehalten, dass dies der Fall ist? | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
guck doch in den assemblierten code, und siehe, dass er nicht mehr da ist. | ||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hehe, das ist ne gute Idee, das hätte glatt von mir sein können. ![]() Shame on me. EDIT: Grad probert. Klappt nicht. Der Code bleibt vorhanden: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group