none
Kompilerfehler C2143 im Zusammenhang mit C RRS feed

  • Frage

  • Hallo Zusammen,

    kann mir jemand erklären, warum der MSVC Kompiler einen Fehler wirft, wenn man eine Zuweisung an eine Variable zu Beginn eines Programms zwischen 2 Deklarationen setzt?

    // C2143j.c
    int main() 
    {
        int i = 0;
        i++;
        int j = 0; // C2143
    }

    Ich habe das Codefragement auch mit gcc kompiliert, dem ist das völlig egal.

    Gibt es einen Grund weshalb der MS Kompiler das nicht will?

    Danke!


    • Bearbeitet bowie_22 Mittwoch, 2. Januar 2013 06:34
    Mittwoch, 2. Januar 2013 06:33

Antworten

  • In C ist das simpel und einfach nicht erlaubt. (Jedenfalls nicht in dem Standard, dern VC unterstützt). Dort müssen alle Variablen am Anfang des Blocks deklariert werden. In C++ geht das sehr wohl.

    Warum verwendest Du kein C++? Wenn es um die Linkage geht, kannst Du ja extern "C" verwenden.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de


    Mittwoch, 2. Januar 2013 07:10
    Moderator

Alle Antworten

  • In C ist das simpel und einfach nicht erlaubt. (Jedenfalls nicht in dem Standard, dern VC unterstützt). Dort müssen alle Variablen am Anfang des Blocks deklariert werden. In C++ geht das sehr wohl.

    Warum verwendest Du kein C++? Wenn es um die Linkage geht, kannst Du ja extern "C" verwenden.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de


    Mittwoch, 2. Januar 2013 07:10
    Moderator
  • Hallo,

    danke für den Hinweis.

    Ich bereite gerade eine Vorlesung "C Programmieren" vor. Deshalb verwende ich i.d.R. C und nicht C++.

    Mittwoch, 2. Januar 2013 12:40