by Guest » 13 Jan 2025, 14:37
Ich versuche, ein Swift-Makro zu erstellen, das das Attribut @available(*, veraltet) allen Eigenschaften einer Struktur bedingt hinzufügt, wenn das Makro angewendet wird. Ich möchte dieses Verhalten global mithilfe eines benutzerdefinierten Flags zur Kompilierungszeit steuern, sodass ich zur Build-Zeit in meinem Projekt zwischen dem Anzeigen und Ausblenden der @available-Annotation umschalten kann.
Das würde ich gerne tun Übergeben Sie ein Flag zur Kompilierungszeit global im Projekt und lassen Sie es das Verhalten des Swift-Makros bedingt beeinflussen.
Beispiel:
Ich möchte das Makro wie folgt verwenden:
Code: Select all
@MyMacro()
struct X {
var a: String
var b: Int
}
Und je nachdem, ob ein globales Flag zur Kompilierungszeit gesetzt ist, sollte das Ergebnis entweder so aussehen:
Code: Select all
struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
Mit aktiviertem Flag
Code: Select all
struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
Mit deaktivierter Flagge:
Code: Select all
struct X {
var a: String
var b: Int
}
Ich versuche, ein Swift-Makro zu erstellen, das das Attribut @available(*, veraltet) allen Eigenschaften einer Struktur bedingt hinzufügt, wenn das Makro angewendet wird. Ich möchte dieses Verhalten global mithilfe eines benutzerdefinierten Flags zur Kompilierungszeit steuern, sodass ich zur Build-Zeit in meinem Projekt zwischen dem Anzeigen und Ausblenden der @available-Annotation umschalten kann.
Das würde ich gerne tun Übergeben Sie ein Flag zur Kompilierungszeit global im Projekt und lassen Sie es das Verhalten des Swift-Makros bedingt beeinflussen.
[b]Beispiel:[/b]
Ich möchte das Makro wie folgt verwenden:
[code]@MyMacro()
struct X {
var a: String
var b: Int
}
[/code]
Und je nachdem, ob ein globales Flag zur Kompilierungszeit gesetzt ist, sollte das Ergebnis entweder so aussehen:
[code]struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
[/code]
[b]Mit aktiviertem Flag[/b]
[code]struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
[/code]
[b]Mit deaktivierter Flagge:[/b]
[code]struct X {
var a: String
var b: Int
}
[/code]