Die Verwendung statischer Member-Funktionszeiger als C-API-Callbacks in C wirft Bedenken hinsichtlich Sicherheit und Portabilität auf . Auch wenn eine solche Vorgehensweise auf den ersten Blick zu funktionieren scheint, da klassenstatische Funktionen häufig dieselbe Aufrufkonvention wie C-Funktionen verwenden, gilt sie gemäß dem C-Standard als unsicher und nicht ratsam.
Gemäß dem Standard (3.5/10 ), „Die von allen Deklarationen angegebenen Typen, die sich auf ein bestimmtes Objekt oder eine bestimmte Funktion beziehen, müssen identisch sein.“ Wenn jedoch eine statische Memberfunktion als Rückrufziel verwendet wird, erfordert der Rückrufcode, der C-Sprachbindungen verwendet, eine Funktion mit einer anderen Sprachverknüpfung. Wie im Standard (7.5/1) definiert: „Zwei Funktionstypen mit unterschiedlichen Sprachverknüpfungen sind unterschiedliche Typen, auch wenn sie ansonsten identisch sind.“
Daher müssen die statische Memberfunktion und der API-Rückruf dasselbe haben Sprachverknüpfung. Um Sicherheit und Portabilität zu gewährleisten, wird dringend empfohlen, C-ABI-Rückrufe im C-Code als „extern „C““ zu deklarieren.
Das obige ist der detaillierte Inhalt von## Statische Member-Funktionszeiger als C-API-Rückrufe: Ein Sicherheits- und Portabilitätsdilemma?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!