Defines ausgeben



  • Hi folks

    ich habe im code einige #define's

    z.B.

    #define DDDD 1

    gibts ne möglichkeit mit printf "DDDD" auszugeben, nicht "1"?



  • so sollte es gehen:

    #define expr(what) (#what)

    #define A 1

    printf("%s",expr(A));



  • Und wo ist der Vorteil gegenüber printf("A"); ?



  • Keiner, ausser dass man weiß dass hier der Name eines Defines ausgegeben wird...



  • kuck mal in die winsock.h

    dort gitbs tausende fehler codes,

    es ist gewiss ein unterschied ob ich in einer protokolldatei eine Zeile
    "fehler 10000" oder fehler "WSADISCONNECT" habe.



  • Original erstellt von <gast>:
    kuck mal in die winsock.h
    dort gitbs tausende fehler codes,
    es ist gewiss ein unterschied ob ich in einer protokolldatei eine Zeile
    "fehler 10000" oder fehler "WSADISCONNECT" habe.

    da tut aber nichts helfen.
    kriegste nen int von WSAGetLastError(), dann kannste nicht wissen, welchem #define das entspricht.
    immerhin kann in der einen atei stehen
    #define SOCKET_ERROR 1
    und in der anderen
    #define FILE_ERROR 1
    und in der dritten
    #define #MOUSE_IS_DIRTY 1

    der compiler kann nicht rausfinde, was die 1 bedeuten soll.
    zum glock kannste dir aber inzwischen von FormatMessage die Fehler der winsock-sachen in klartexkt übersetzen lassen.

    dann kannste zwar leider nur sachen wie "winsockfehler 10055: Ein Socketvorgang konnte nicht ausgeführt werden, da dem System Pufferspeicher f
    ehlte oder eine Warteschlange voll war." in die logdatei schreiben, aber der user wirds hoffentlich verstehen.

    [ Dieser Beitrag wurde am 23.05.2003 um 12:35 Uhr von volkard editiert. ]



  • Original erstellt von <gast>:
    **kuck mal in die winsock.h

    dort gitbs tausende fehler codes,

    es ist gewiss ein unterschied ob ich in einer protokolldatei eine Zeile
    "fehler 10000" oder fehler "WSADISCONNECT" habe.**

    öhm ja, aber du wirst auf diese Weise nicht anhand des Fehlercodes das dazugehörige define bekommen. Für Fehlerbeschreibungen musst du das Betriebssystem um Rat fragen. Unter Linux perror(), unter Windows glaub ich WSA_GetLastError oder so.


Anmelden zum Antworten