MS hat eine Reihe öffentlicher Antworten darauf, von denen die meisten ihre Benutzer beschuldigen. Wie dieser:
https://devblogs.microsoft.com/cppblog/iso-c-standard-update/
Jetzt erhält das Visual C ++ - Compilerteam gelegentlich die Frage, warum wir C99 nicht implementiert haben. Es basiert wirklich auf dem Interesse unserer Benutzer. Wenn wir viele Anfragen für bestimmte C99-Funktionen erhalten haben, haben wir versucht, diese (oder Analoga) zu implementieren. Ein paar Beispiele sind variadische Makros long long
, __pragma
, __FUNCTION__
, und __restrict
. Wenn es andere C99-Funktionen gibt, die Sie für Ihre Arbeit nützlich finden, lassen Sie es uns wissen! Wir hören nicht viel von unseren C-Benutzern, also sprechen Sie und machen Sie sich Gehör
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=345360
Hallo: Leider ist der überwältigende Rückblick, den wir von der Mehrheit unserer Benutzer erhalten, dass sie es vorziehen würden, dass wir uns auf C ++ - 0x anstatt auf C-99 konzentrieren. Wir haben bestimmte beliebte C-99-Funktionen (verschiedene Makros long long
) "ausgewählt", aber darüber hinaus ist es unwahrscheinlich, dass wir im C-99-Bereich (zumindest kurzfristig) viel mehr tun.
Jonathan Caves
Visual C ++ Compiler Team.
Dies ist ein ziemlich trauriger Zustand, macht aber auch Sinn, wenn Sie den Verdacht haben, dass MS Benutzer einschließen möchte: Es macht es sehr schwierig, modernen gcc-basierten Code in MSVC zu portieren, was zumindest für mich äußerst schmerzhaft ist.
Es gibt jedoch eine Problemumgehung: Beachten Sie, dass Intel diesbezüglich viel besser informiert ist. Der Intel C-Compiler kann C99-Code verarbeiten und verfügt sogar über dieselben Flags wie gcc, wodurch das Portieren von Code zwischen Plattformen erheblich vereinfacht wird. Der Intel-Compiler arbeitet auch in Visual Studio. Wenn Sie also MS COMPILER verschrotten, können Sie immer noch die MS IDE verwenden, von der Sie glauben, dass sie einen Wert hat, und C99 nach Herzenslust verwenden.
Ein vernünftigerer Ansatz ist es, ehrlich zu Intel CC oder gcc zu wechseln und Eclipse für Ihre Programmierumgebung zu verwenden. Die Portabilität von Code unter Windows-Linux-Solaris-AIX-etc ist meiner Erfahrung nach normalerweise wichtig, und dies wird von MS-Tools leider überhaupt nicht unterstützt.