Also, mit dieser einfachen Eingabe,String-Länge in der M4 Präprozessor
define(foo, len($1)) foo(abcdef)
ich, als Ausgabe:
2
Wie kann ich diese 5
, anstatt zu drucken? Ich kann keine Kombination von Zitat herausfinden, die len()
tatsächlich den Wert $1
, abcdef
anstelle der Literalzeichenfolge `$1'
erhält.
Edit 1: Der eigentliche Code in Frage sieht ungefähr so aus:
define(`FILE', `#' /!\ $1 /!\
`#' ====substr(==============================,0,len($1))====)dnl
FILE(`UTILITY.ASM')
Ich sehe nicht, was dies mit [c], seine [c-Präprozessor zu tun ] oder [Präprozessor] s im Allgemeinen (m4 ist ein Makro/Makro-Prozessor für allgemeine Zwecke). Bitte aktualisieren Sie Ihre Frage, um zu zeigen, wie sie mit diesen Tags zusammenhängt oder um diese Tags zu entfernen. –
M4 wird normalerweise (oft auf SO!) Als Ersatz für Leute vorgeschlagen, die versuchen, komplexe Dinge mit dem CPP zu tun. Ich verlasse die Tags, denn es scheint, dass pragmatisch jede M4-Frage eine Erweiterung einer CPP-Frage ist; aber ich werde nicht beleidigt sein, wenn jemand sie entfernen möchte. ¯ \\ _ (ツ) _/¯ – ELLIOTTCABLE