Ich bin auf der Suche nach dem Typ eines externen "C" -Funktionszeigers. Es ist eine Mitgliedsvariable. Die Syntax in this question kann ich nicht kompilieren.Wie deklariere ich ein Mitglied als Zeiger auf eine externe "C" -Funktion?
template<typename Sig> struct extern_c_fp {
extern "C" typedef typename std::add_pointer<Sig>::type func_ptr_type;
};
Ich habe mit Anordnen des extern "C"
experimentierten an beiden Enden und zwischen typedef
und typename
und zwischen type
und func_ptr_type
, aber der Compiler alle abgelehnt. Irgendwelche Vorschläge?
Mit 'externen" C "' Alias Vorlagen würde dies funktionieren. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1463 –
BTW Du brauchst 'Sig' um' extern' C "' zu sein. Der Zeigerzusatz zum Funktionstyp hat die Verknüpfung nicht. Es ist der Funktionstyp selbst. Sie induzieren die Verknüpfung bei der Bildung des Funktionstyps. Nicht bei der Benennung eines vorhandenen Funktionstyps - der vorhandene Typ hat die Verknüpfung, die er hat. –
http://liveworkspace.org/code/768027ef00bb0a31e76d8d856ac50801 Es klagt weniger, aber immer noch problematisch. – Puppy