So wie ich es verstanden habe (und dein Beispiel-Code ist dafür ungeeignet): https://www.freepascal.org/docs-html/ref/refse22.html
Die Variable bekommt in Assembler denselben Namen wie in deinem Quellcode und wird für anderen Assembler-Code zugänglich.
Bin mir jetzt nur nicht sicher, ob case-sensitive oder nicht (das mit dem cvar)
Kann mich aber auch irren...
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Zvoni hat geschrieben: Mi 7. Aug 2024, 15:02
So wie ich es verstanden habe (und dein Beispiel-Code ist dafür ungeeignet): https://www.freepascal.org/docs-html/ref/refse22.html
Die Variable bekommt in Assembler denselben Namen wie in deinem Quellcode und wird für anderen Assembler-Code zugänglich.
Bin mir jetzt nur nicht sicher, ob case-sensitive oder nicht (das mit dem cvar)
Kann mich aber auch irren...
Wen ich das richtig lese, es es public das Gegenstück von external.
Was mich dabei aber verwundert, wieso generiert die h2pas sowas ?
Müsste dies nicht external anstelle von public nehmen ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Wen ich das richtig lese, es es public das Gegenstück von external.
Ja so könnte man das durchaus sehen.
Mit dem von mir gezeigten code ist der C-Code in der Lage direkt eine FPC funktion auf zu rufen, die nur via .h file bekannt gemacht wurde.
Verständlich, dass h2pas, dann ein public draus macht, denn korrekterweise sollten externe Verweise in C ein extern haben, gcc und MSVC sind da aber etwas nachsichtig. clang zum Beispiel ist da um einiges weniger nachsichtig und wird das als Variablendeklaration ansehen, was dann entsprechend zu anderen Fehlern (spätestens zur Laufzeit) führen kann/wird.