2010-05-30 3 views
2

Je viens de rencontrer ce terme dans ce post,Comment puis-je savoir si c89 ou c99 est appliqué par cl.exe?

comment puis-je vérifier quelle règle est réellement utilisée par mon compilateur?

Ou est-il possible de spécifier une règle pour cl.exe?

+4

Lire le manuel? :-) –

+2

En fait, presque toutes les questions peuvent être résolues par "Lire le manuel", pourquoi restons-nous toujours à la place de "Lire le manuel"? – user198729

+1

Microsoft * still * ne prend pas en charge C99, même dans Visual Studio 2010, vous pouvez donc utiliser C89 en toute sécurité. –

Répondre

5

Les compilateurs C99 doivent définir un symbole pré-requis __STDC_VERSION__ avec la valeur 199901L, ce que C90 ne devrait pas faire (rien ne les empêche de le faire et reste conforme à C90, mais j'en doute). De toute évidence, rien n'est sûr pour les compilateurs ou compilateurs non conformes en mode non conforme. Et il y a encore la question des bogues et de la transition (la dernière fois que j'ai vérifié par exemple, g ++ ne définissait pas encore la macro équivalente à la valeur prescrite pour C++ 98 alors que la plupart des gens que je connais pensent qu'il serait plus utile faites-le au lieu d'attendre l'implémentation de export).

+0

'__STDC_VERSION__' (deux caractères de soulignement) –

+0

@Joe, corrigé, merci. – AProgrammer

1

cl.exe, le compilateur Microsoft? Il ne supporte pas C99, surtout.

Questions connexes