error c2065 nicht deklarierte Bezeichner



  • hi, ich hab folgendes Problem:

    ich benutze ein macro um 2 werte zu überprüfen und den keineres wieder zurück zu geben.
    Beim Compilieren bekomme ich dann folgende Fehler:

    error C2065: 'a': nichtdeklarierter Bezeichner
    error C2065: 'b': nichtdeklarierter Bezeichner
    

    Hier der gesamte Quellcode:

    #include <iostream>
    using std::cout;
    using std::cin;
    using std::endl;
    
    #define MIN (a, b) ( ((a) < (b)) ? (a) : (b) )
    
    int main( )
    {
    	int ivar1, ivar2, ivar3;
    
    	ivar1 = 1;
    	ivar2 = 2;
    	ivar3 = MIN(ivar1, ivar2);
    	cout << "... ivar3 = " << ivar3 << endl;
    
    	cin.get( );
    	return 0;
    }
    

    greetz



  • #define MIN(a,b) \\  << kein Leerzeichen!
    

    Bei Makros dürfen zwischen dem Namen und den Parametern keine Leerzeichen stehen.

    Allgemein ist von der Verwendung solcher Makros abzuraten. Benutz lieber std::min aus <algorithm>



  • alex4cpp schrieb:

    ich benutze ein macro um 2 werte zu überprüfen und den keineres wieder zurück zu geben.

    Makros sollte man meiden, wenn es keine sinnvollen Alternativen gibt, verwende eher die Templatefunktionen der Standardbibliothek (Header <algorithm>, std::min, std::max...).

    #include <iostream>
    #include <algorithm>
    
    int main()
    {
        int ivar1 = 1;
        int ivar2 = 2;
        int ivar3 = std::min(ivar1, ivar2);
    
        std::cout << "... ivar3 = " << ivar3 << std::endl;
        std::cin.get( );
    }
    

    cu André



  • vielen Dank für die schnelle Antwort und auch für die guten Tipps!

    Da wär ich glaub nicht so schnell drauf gekommen...


Anmelden zum Antworten