source code verständnisfrage



  • kann mir jemand folgenden Sinn dieser beiden c++ Zeilen erklären?

    Wenn es möglich ist bitte möööglichst Anfängergerecht !!

    1.)
    #define SEND_RQ(MSG) \
    /* cout<<send_str; */\
    send(sock,MSG,strlen(MSG),0);

    2.)

    sin.sin_addr.s_addr = ((int)*host_addr->h_addr_list) ;

    danke



  • #define SEND_RQ(MSG) \
     /* cout<<send_str; */\
     send(sock,MSG,strlen(MSG),0);
    

    [/quote]
    Das ist ein Define. Überall wo du SEND_RQ(XXX) im Quelltext stehen hast,
    wird der Präprozessor es durch dieses hier ersetzen

    /* cout<<send_str; */ send(sock, XXX, strlen(XXX),0);
    

    Also aus

    char* pMsg;
    SEND_RQ(pMsg)
    

    wird dieses hier:

    char* pMsg;
    /* cout<<send_str; */ send(sock, pMsg, strlen(pMsg),0);
    

    Defines können praktisch sein - aber du kannst damit auch viel kaputt machen. Die alten Hasen hier, können dir da sicherlich ein gutes Beispiel geben.
    Bei defines muss man immer wissen, dass alles einfach nur platt ersetzt wird.
    Der Präprozessor denkt nicht.



  • ok danke !

    #define SEND_RQ(MSG) \
    /* cout<<send_str; */\
    send(sock,MSG,strlen(MSG),0);

    mich haben auch zusätzlich die backslash - escape zeichen verwirrt. welchen sinn haben diese dort ?

    obere zeile würde so beschrieben
    #define SEND_RQ(MSG) send(sock,MSG,strlen(MSG),0);
    gleiches bewirken oder?



  • mit \ am Ende einer Define Zeile kann man mehrzeilige Defines definieren, dadurch kann es lesbarer werden 😉


Anmelden zum Antworten