Ein klassisches Makro zur Berechnung der Anzahl der Elemente in einem Array ist dies:
%Vor%Das Problem dabei ist, dass es automatisch fehlschlägt, wenn das Argument ein Zeiger anstelle eines Arrays ist. Gibt es einen portablen Weg, um sicherzustellen, dass dieses Makro nur mit einem tatsächlichen Array verwendet wird?
Unter Verwendung einer nicht-portablen integrierten Funktion ist hier ein Makro zum Ausführen einer statischen Assertion, dass a
ein Array ist:
Es funktioniert mit gcc
und clang
. Ich benutze es, um das Makro countof()
sicherer zu machen:
Aber ich habe keine tragbare Lösung für dieses Problem.