Array mit Defines füllen



  • Hi.

    Ich hab ne Klasse in meinem Projekt, in dessen Header per #define Farben definiert sind.

    ...
    #define TCRED 0x000000FF //Red
    #define TCBLU 0x00FF0000 //Blue
    ...

    In dem selben Header möchte ich jetzt noch ein Array erstellen, was alle Defines enthält, um später hinzukommende Farben nur noch in diesem Header eintragen zu müssen.
    Idealerweise wäre n CString-Array zu erzeugen, was dann ungefähr solche Einträge haben sollte:

    "/TCRED"
    "/TCBLU"
    ...

    Versucht hab ich es bisher mit folgender Variante:

    CString m_arrTextColor[] = {"/TCBLC", "/TCWHI"};

    Als Fehlermeldung bekomm ich aber überall wo der Header eingebunden wird das hier:

    ChildFrm.cpp
    p:\project\myclase.h(36) : error C2059: syntax error : '{'
    p:\project\myclase.h(36) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body

    Ist sowas in einer Headerdatei überhaupt möglich? 😕
    Würde es mir nämlich gern ersparen, in mehr wie einer Datei Farben hinzufügen zu müssen und müsste so nur das Farbarray mit den define-Strings auswerten.

    LG
    Anti



  • Du solltest

    #define TCRED 0x000000FF //Red
    #define TCBLU 0x00FF0000 //Blue
    

    durch

    #define TCRED 0x000000FF /*Red*/
    #define TCBLU 0x00FF0000 /*Blue*/
    

    ersetzen.

    Auch solltest Du kein "CString" sondern

    LPCTSTR m_arrTextColor[] = {_T("/TCBLC"), _T("/TCWHI")};
    

    verwnenden



  • : error C2059: Syntaxfehler : '{'
    : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungen

    ähm
    du kannst einen CString nicht in diese art als Array erstellen.
    das kannst du wenn bei LPCSTR LPTSTR... char usw.. verwendest

    static CString m_arrTextColor[2]; //*.h
    m_arrTextColor[0]="/TCBLC";//*.cpp
    m_arrTextColor[1]="/TCWHI";
    MessageBox(m_arrTextColor[1]);
    
    #define TCRED 0x000000FF //Red 
    #define TCBLU 0x00FF0000 //Blue 
    
    static DWORD dwColors[]={TCRED,TCBLU};
    


  • @Jochen
    So bekomm ich aba trotzdem noch den gleichen Fehler wie zuvor.

    @LowFly
    Ich würde das Array aber gern in der Headerdatei initialisieren, weil ich sonst immer den Aufwand hab, in mehreren Dateien Änderungen vorzunehmen.
    So könnte ich es nämlich global in der Headerdatei mit Werten belegen und muss im Quellcode dann nur noch die Array-größe abfragen, die dann jedoch von der Anzahl der Farben unabhängig wäre.



  • Jochen Kalmbach schrieb:

    Du solltest

    #define TCRED 0x000000FF //Red
    #define TCBLU 0x00FF0000 //Blue
    

    durch

    #define TCRED 0x000000FF /*Red*/
    #define TCBLU 0x00FF0000 /*Blue*/
    

    ersetzen.

    Oder typsicher:

    const COLORREF TCRED = 0x000000FF; // Red
    const COLORREF TCBLU = 0x00FF0000; // Blue
    


  • Du solttest Versuchen eine Statische Variable in Deiner Klasse (also im Header in der public Section Deiner Klasse ala static <typ> Meine Vairable) anzulegen. Diese wird dann in Zugehörigen CPP Datei Inialisiert (einfach <typ> MeinKlasse::MeineVariable = ...) .
    Danach kannst Du im innerhalb des Projekts z.b. mit MeinKlasse::MeineVariable darauf zugreifen.
    Macht aber eigentlich nur Sinn wenn Du die Variable während der Ausführung verändern möchtest.

    Ansonsten immer mit const <typ> MeineVariable = ...

    gruss
    Marcus



  • static LPCSTR lpString[]={"AB\\","CD\\"};

    und wenn du sie wirklich global haben willst mach die variable extern


Anmelden zum Antworten