Ich habe das folgende Stück Code, und ich möchte programmatisch die Felder der Struktur zuzugreifen:Warum Token-Verkettung in C++ nicht funktioniert?
#include <stdio.h>
#include <stddef.h>
#define FIELD(NAME, NUM) {NAME##NUM}
struct SFOO
{
int i;
float f1;
float f2;
char c;
};
int main() {
printf("Offset of 'f1' is %u", offsetof(SFOO, f1));
printf("Offset of 'f1' is %u", offsetof(SFOO, FIELD(f, 1)));
}
Die erste Zeile in main()
funktioniert, aber die zweite Zeile nicht kompiliert (MSVC 2012). Wie kann ich den Feldnamen mithilfe der Token-Verkettung generieren?
Warum Sie die geschweiften Klammern brauchen ('{}') in der Definition von 'Feld'? – jxh
Das 'FIELD'-Makro in der zweiten Zeile erzeugt nicht die gleiche Ausgabe wie die erste Zeile. – callyalater
Entfernen Sie die Klammern '{}'? – Galik