Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Seltsames IFDEF Problem

  Alt 4. Jan 2022, 15:30
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:
{$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}
Und mit OR/AND lässt sich so manches verschachteltes IFDEF-Monster vereinfachen und übersichtlicher gestalten.
Delphi-Quellcode:
{$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}
oder
Delphi-Quellcode:
{$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}
k.A. ob FPC auch "derartige" ConditionalDefines mit Defined() kennt, aber wenn, dann
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}
$2B or not $2B
  Mit Zitat antworten Zitat