Zeichenketten und Makros



  • Hi,

    ich hab hier ein Problem und wollt mal fragen, ob jemand von euch vielleicht helfen kann:

    #define SELECT_ALL( X )    "SELECT * from " # X
    
    int func( char *table )
    {
        char query[] = SELECT_ALL( table );
        printf( "%s", query );
    }
    
    int main(...)
    {
        char table[] = "myTable";
        func( table );
    }
    

    Statt wie gewollt "SELECT * from myTable" kommt "SELECT * from table".
    Was ich mittlerweile herausgefunden habe ist, dass das # das nicht so macht wie ich es will. Kennt jemand eine Alternative? strcat(...) wuerde zwar gehen, aber fuer komplexere Abfragen muesste ich dann jedes Schluesselwort per #define ablegen und das will ich eigentlich nicht.

    Bin fuer jeden Tip dankbar.

    Philipp



  • char query[SIZE];
    snprintf(query, sizeof(query), "select * from %s", table);
    


  • DrGreenthumb schrieb:

    char query[SIZE];
    snprintf(query, sizeof(query), "select * from %s", table);
    

    Interessante Idee, mal schauen ob mich das weiterbringt, danke!


Anmelden zum Antworten