Eigene Fehlerausgaben in AVR Studio

OP #3906434
Lesenswert?

Hallo zusammen,
ich habe eine vermutlich relativ einfache Frage, aber die Suche (im 
Forum oder auch global bei google) liefert leider nicht das Ergebnis das 
ich haben möchte, da das Thema mit den Postings von speziellen 
Fehlermeldungen leider völlig überlagert ist.
Ich schreibe mir grade ein paar kleine C ++ Bibliotheken für einen XMEGA 
Controller und ich benutze WIN AVR Studio 6.2 mit GCC. Dabei benutze ich 
diverse Switch Anweisungen. Jetzt hätte ich gerne eine Art Fehlermeldung 
die mir der Compiler an den Kopf schmeißt wenn ich bei der dem Default 
Block angekommen bin. Ein Beispiel:


switch (nummer)
{
        case 0: bliblablub
        break;
        case 1: ladida
        break;
        ...
        ...
        ...
        case 7: trallala
        break;
        default: #Ausgabe in der Errorlist: Ein Port hat nur die Pins 
0-7
        du Depp!
}

Ich würde mir gerne also in dem Fenster wo normalerweise die 
Kompilierfehler stehen eine Error Message ausgeben lassen. Ich vermute 
mal dass es da eine Möglichkeit gibt, oder?
OP #3906458
Lesenswert?

Hallo,
erstmal vielen Dank für die schnelle Antwort. Habe jetzt

                default:  #ifdef _DEBUG
                      #error "Du Depp Nur Ports 0-7 waehlen."
                      #endif // _DEBUG

eingefügt, was aber nur Fehlermeldungen erzeugt. 'ifdef' was not 
declared in this scope.... Ich vermute mal da muss noch eine Bib 
included werden?

Mit enum könnte eine gute Idee sein, würde es aber gerne grade mal so 
hinkriegen, damit ich hier einen Teil fertig & verstanden habe.
Gast #3907208
Lesenswert?

http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
"-Wswitch" und folgende
Besser geht es zur Compile-Zeit nicht.

Vielleicht hilft auch das:
http://en.cppreference.com/w/cpp/language/static_assert
Braucht aber Konstanten, also #defines oder Template-Parameter:
1
#include <iostream>
2
#include <type_traits>
3

4
using namespace std;
5

6
template <int number> class Pin
7
{
8
public:
9
  Pin(){};
10
  void set()
11
  {
12
    static_assert((number >= 0) && (number <= 7), "Moep, alles falsch!");
13
    switch (number)
14
    {
15
      case 1: cout << "1"<<endl; break;
16
      default: cout << "nicht 1"<<endl; break;
17
    };
18
  }
19
};
20

21
int main() {
22
  Pin<1> foo;
23
  Pin<42> blaa;
24
  foo.set();
25
  blaa.set();
26
  return 0;
27
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren