![]() |
Seltsames IFDEF Problem
Hallo,
gegeben Delphi 11.0 und dieser Code in einer Include Datei:
Delphi-Quellcode:
Die Include Datei wird woanders eingebunden und wenn ich die Zeile mit
{$IFNDEF FPC}
{$IFNDEF ASSEMBLER} {$DEFINE NO_ASM} (* default ON *) {$ELSE} {$IFDEF WINDOWS} {$DEFINE NO_ASM} (* default OFF *) // zu Testzwecken an {$ELSE {$DEFINE NO_ASM} (* default ON *) {$ENDIF} {$ENDIF} {$ELSE} // Turn ASM off for FPC as we do not know enough about ASM support on FPC {$DEFINE NO_ASM} (* default ON *) {$ENDIF} "zu Testzwecken an" so drin habe und dort, wo das eingebunden wird
Delphi-Quellcode:
zu Testzwecken einbinde wird Bum vom Compiler nicht wie gewünscht als falsch erkannt.
{$IF Defined(NO_ASM)}
Bum! {$IFEND} Kommentiere ich {$IFDEF WINDOWS} und das dazu gehörende Else aus, findet der Compiler den Fehler. Nur warum? Darf ich solche IFDEF/IFNDEF Konstrukte nicht so tief schachteln? Grüße TurboMagic |
AW: Seltsames IFDEF Problem
Das ELSE in der Mitte hat keine schließende Klammer.
|
AW: Seltsames IFDEF Problem
|
AW: Seltsames IFDEF Problem
Zitat:
Mann, war ich blind... |
AW: Seltsames IFDEF Problem
Ist das NO_ASM für "Assembler" oder für "InlineAssembler" gedacht?
In Win64 ist Assembler möglich, aber InlineAssembler gibt es leider nicht mehr, also ganze Methode als Assembler = JA, aber kurzes Assembler-Stück innerhalb einer Pascal-Methode = NEIN. Ich versuche persönlich von NOT-DEFINED Abstand zu halten, weil N da im IFNDEF zu leicht zu übersehen ist.
Delphi-Quellcode:
Und mit OR/AND lässt sich so manches verschachteltes IFDEF-Monster vereinfachen und übersichtlicher gestalten.
{$IFDEF FPC}
// Turn ASM off for FPC as we do not know enough about ASM support on FPC {$DEFINE NO_ASM} {$ELSE} {$IFDEF ASSEMBLER} {$IFDEF WINDOWS} {$UNDEF NO_ASM} {$ELSE} {$DEFINE NO_ASM} {$ENDIF} {$ELSE} {$DEFINE NO_ASM} {$ENDIF} {$ENDIF}
Delphi-Quellcode:
oder
{$IFDEF FPC}
// Turn ASM off for FPC as we do not know enough about ASM support on FPC {$DEFINE NO_ASM} {$ELSE} {$IF Defined(ASSEMBLER) and Defined(WIN32)} //{$IF Defined(ASSEMBLER) or Defined(WINDOWS)} {$UNDEF NO_ASM} {$ELSE} {$DEFINE NO_ASM} {$IFEND} {$ENDIF}
Delphi-Quellcode:
k.A. ob FPC auch "derartige" ConditionalDefines mit Defined() kennt, aber wenn, dann
{$DEFINE NO_ASM}
{$IFDEF FPC} // Turn ASM off for FPC as we do not know enough about ASM support on FPC {$ELSE} {$IF Defined(ASSEMBLER) and Defined(WIN32)} //{$IF Defined(ASSEMBLER) or Defined(WINDOWS)} {$UNDEF NO_ASM} {$IFEND} {$ENDIF}
Delphi-Quellcode:
// Turn ASM off for FPC as we do not know enough about ASM support on FPC
{$IF Defined(ASSEMBLER) and Defined(WIN32) and not Defined(FPC)} {$UNDEF NO_ASM} {$ELSE} {$DEFINE NO_ASM} {$IFEND} |
AW: Seltsames IFDEF Problem
Hallo,
da geht's um ASM generell. Ist im Entwicklungszweig der DEC jetzt auch gefixt. Grüße TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz