Stringifizierung eines Makrowerts

Ich hatte ein Problem - ich muss einen Makrowert sowohl als Zeichenfolge als auch als Ganzzahl verwenden.

 #define RECORDS_PER_PAGE 10

 /*... */

 #define REQUEST_RECORDS \
      "SELECT Fields FROM Table WHERE Conditions" \
      " OFFSET %d * " #RECORDS_PER_PAGE \
      " LIMIT " #RECORDS_PER_PAGE ";"

 char result_buffer[RECORDS_PER_PAGE][MAX_RECORD_LEN];

 /* ...and some more uses of RECORDS_PER_PAGE, elsewhere... */

Dies schlägt fehl mit einer Meldung über "Streuner #", und selbst wenn es funktioniert hätte, würde ich wahrscheinlich die Makronamen und nicht die Werte verketten. Natürlich kann ich die Werte an die endgültige Methode weitergeben "LIMIT %d ", page*RECORDS_PER_PAGE) aber es ist weder hübsch noch effizient. Es ist Zeiten wie diese, in denen ich wünschte, der Präprozessor würde Zeichenfolgen nicht auf besondere Weise behandeln und ihren Inhalt wie normalen Code verarbeiten. Vorerst habe ich es mit @ abgeschloss#define RECORDS_PER_PAGE_TXT "10" aber verständlicherweise bin ich nicht glücklich darüber.

Wie bekomme ich es richtig?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage