stdafx und ein enum


  • Administrator

    Grüsse zusammen,

    Ein besserer Titel ist mir leider nicht eingefallen. Aber ich hab folgendes Problem. Ich habe gewisse Farben, die ich in meinem Projekt immer wieder überall brauche. Das sind immer dieselben und anstatt, dass ich die überall definiere, dachte ich, ich definiere die Global in der StdAfx.h, da dieser Header in jeder .cpp includiert wird. Gesagt getan:

    stdafx.h

    enum ECOLORS
    {
        CLRREF_BACKGROUNDCOLOR = 4378,
        CLRREF_CONTRASTCOLOR   = 38655,
    };
    

    Wenn ich aber dann in einer anderen Klasse in der cpp, wo oben ganz klar folgendes steht:

    #include <stdafx.h>
    

    CLRREF_BACKGROUNDCOLOR verwenden will, kommt die Meldung vom Compiler, dass dies nicht definiert sei. Und ich frag mich nun, wieso?

    Danke für die Hilfe im voraus.

    Grüssli



  • müsste eigentlich gehen wenn du dich nicht vertippt hast. versuch's doch mal mit einem kompletten rebuild des projekts...


  • Administrator

    Jetzt bin ich baff ... ein kompletter rebuild hat es gelöst. Doch wieso? Wenn man buildet, dann compiliert man doch normalerweise das, was man verändert hat, und wenn ich die stdafx verändere, dann sollte die doch auch neu compiliert werden?? ...
    Naja es geht jetzt jedenfalls. Danke

    Grüssli



  • Kann unter Umständen schonmal vorkommen, dass nen altes Zwischenkompilat verwendet wird. Deswegen bei solchen Fehler die eigentlich nicht sein dürften, einfach mal nen rebuilt erzwingen, oder vor dem rebuilt das projekt von Zwischendateien säubern (lassen).

    du solltest statt #include <stdafx.h> #include "stdafx.h" schreiben. "" sucht zuerst im lokalen Pfad (das ist dort wo dein Projekt liegt) bei <> werden die Include-Pfade (die du normal in den Compiler-Settings setzt, oder als Umgebungsvariablen) abgesucht.



  • Hoi,
    mir ist noch btw. aufgefallen, dass du ein Komma gesetzt hast, wo kein hingehört:

    enum ECOLORS
    {
        CLRREF_BACKGROUNDCOLOR = 4378,
        CLRREF_CONTRASTCOLOR   = 38655, // hier!
    };
    

    ->

    enum ECOLORS
    {
        CLRREF_BACKGROUNDCOLOR = 4378,
        CLRREF_CONTRASTCOLOR   = 38655
    };
    

    nur mal so am Rande



  • CodeFinder schrieb:

    Hoi,
    mir ist noch btw. aufgefallen, dass du ein Komma gesetzt hast, wo kein hingehört:

    enum ECOLORS
    {
        CLRREF_BACKGROUNDCOLOR = 4378,
        CLRREF_CONTRASTCOLOR   = 38655, // hier!
    };
    

    die meisten compiler fressen das aber...
    @dravere: manchmal bekommt's die ide nicht hin änderungen zu erkennen. vielleicht haste die stdafx.h genau um 00:00 uhr verändert 😃


  • Administrator

    @Dr. Prof (Doktor und Professor ... Minderwertigkeitskomplex? XD)
    Danke ... werde mir beide Dinge zu Herzen nehmen. Wobei das mit dem include ja nur eine Sache der Compilezeit ist. Und die ist bei mir im allgemeinen nicht so hoch ^^ ... aber ich merk es mir trotzdem ^^

    @Codefinder
    Erstens, aktzeptiert es der Compiler von Visual Studio .Net 2003 (hab es gerade probiert), zweitens war es ein Tippfehler im Forum 🙂

    @net
    Jo gibt es wohl nicht mehr viel zu sagen ^^ ... sry bekommst keine Antwort, nur dass es definitiv nicht um 00:00 Uhr war. Aber könnte sein, dass es so heiss im Zimmer war, dass der Computer keine Lust hatte 🙂 😃

    Grüssli



  • hähä^^ schon klar, ...
    ging mir auch nur um die Schönheit des Codes 😃

    PS: Das Komma da zu setzen finde ich auch -mal von Funktionsfähigkeit und Schönheit abgesehen- unlogisch, da ja keine weitere Aufzählung folgt... 😉



  • hähä^^ schon klar, ...
    ging mir auch nur um die Schönheit des Codes 😃

    PS: Das Komma da zu setzen finde ich auch -mal von Funktionsfähigkeit und Schönheit abgesehen- unlogisch, da ja keine weitere Aufzählung folgt... 😉


Anmelden zum Antworten