Ich möchte eine öffentliche typedef
zu einer Vorlage für einen Zeiger auf ein Funktion nehmen ein Argument hinzufügen, die "C" Sprache Verknüpfung verwendet.
Ich habe es versucht:
%Vor%Und:
%Vor%Und:
%Vor%ohne Erfolg.
Ist das, was ich erreichen will, möglich?
C ++ 03, §7.5p4:
Eine Verknüpfungsspezifikation soll nur im Namensraumbereich auftreten. ... Eine C-Sprachverknüpfung wird für die Namen von Klassenmembern und den Memberfunktionstyp von Klassenmemberfunktionen ignoriert.
Leider können Sie dies im aktuellen C ++ einfach nicht tun. Dieser Text ist in dem letzten C ++ 0x-Entwurf unverändert, aber "Template typedefs" kann es möglicherweise ausführen.
Alles scheint für mich gut zu funktionieren, wenn ich einfach% %_de% von Ihrem Typdef weglasse. Das heißt, das folgende Kompilieren, Verknüpfen und Ausführen ohne Warnungen, Fehler oder Probleme:
foo.c:
%Vor%test.cpp:
%Vor%Für die C ++ - Gurus: Ich kenne nicht die Feinheiten, was C-Verknüpfung von C ++ unterscheidet. Gibt es irgendwelche versteckten Probleme, die in einem einfachen Beispiel wie diesem nicht auftauchen würden?