Gibt es eine Möglichkeit für countof () zu testen, ob sein Argument ein Array ist?

9

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?

    
chqrlie 19.06.2017, 02:43
quelle

1 Antwort

4

Unter Verwendung einer nicht-portablen integrierten Funktion ist hier ein Makro zum Ausführen einer statischen Assertion, dass a ein Array ist:

%Vor%

Es funktioniert mit gcc und clang . Ich benutze es, um das Makro countof() sicherer zu machen:

%Vor%

Aber ich habe keine tragbare Lösung für dieses Problem.

    
chqrlie 19.06.2017 02:43
quelle

Tags und Links