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 bodyIst 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 //Bluedurch
#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.. verwendeststatic 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 //Bluedurch
#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