Ich habe mir die GCC-Dokumentation zur Definition von Makros angesehen und es sieht so aus, als ob ich es möchte ist nicht möglich, aber ich denke, wenn es ist, würde jemand hier wissen.
Was ich tun möchte, ist dieses Makro zu definieren:
%Vor%Welche erweitert zu:
%Vor% In C ++ könnte ich einfach ein SynchronizedBlock
-Objekt machen, das die Sperre in seinem Konstruktor bekommt und im Destruktor freischaltet, aber ich habe keine Idee, wie man es in C macht.
Ich weiß, dass ich einen Funktionszeiger in der Form synchronized(x, &myfunction);
verwenden könnte, aber mein Ziel ist es, C-Code so ähnlich wie Java aussehen zu lassen. Und ja, ich weiß, das ist böse.
Sehr interessante Frage!
Ich schaute mir die anderen Antworten an und mochte die mit for
. Ich habe eine Verbesserung, wenn ich darf! GCC 4.3 führt das Makro COUNTER ein, mit dem wir eindeutige Variablennamen generieren können.
Verwenden Sie diese Makros, diesen Code ...
%Vor%... wird zu ... erweitert.
%Vor%Mit my_mutex__n beginnend mit 0 und jedes Mal, wenn es verwendet wird, wird ein neuer Name generiert! Sie können die gleiche Technik verwenden, um monitorähnliche Code-Stellen mit einem eindeutigen, aber unbekannten Namen für den Mutex zu erstellen.