7
votes

Réglage Visual C ++ Studio / Express au mode Strict ANSI

I Greener généralement et compiler sous Linux avec le drapeau de la GCC et de l'autre; Mais j'ai été forcé de faire un travail à Visual C ++ et chaque fois que je compile mon code C, je reçois tous les avertissements Microsoft comme

'FSCANF': cette fonction ou une variable peut être dangereux. Pensez à utiliser FSCANF_S à la place.

Je reçois malgré ces mesures suivantes sur le site de MSDN Developer pour la mise en place d'un projet ANSI C, mais tous les appels _ ("sécurisés") ne sont pas ansi c!

Toute suggestion sur la mise en place de Visual C ++ Studio dans un mode Strict ANSI uniquement?

Merci.


0 commentaires

3 Réponses :


4
votes

Ces avertissements peuvent être supprimés en définissant _crt_secure_no_warning

Allez à Procec Paramètres -> Préprocesseur et Ajouter _Crt_secure_no_warning

Cela ne forcent pas le compilateur à se conformer à l'ANSI. Il suffit de supprimer l'utilisation ..._ S AVERTISSEMENTS


0 commentaires

2
votes

Un moyen de supprimer des avertissements spécifiques consiste à ajouter quelque chose comme ce qui suit à la source.

#if defined( _WIN32 )
#pragma warning(disable:4996)
#endif


0 commentaires

6
votes

Comme mentionné dans une autre réponse, #define 'ing _crt_secure_no_warning abordera les avertissements spécifiques que vous avez mentionnés dans votre question.

Si vous cherchez vraiment un mode ANSI uniquement, la chose la plus proche est le / za commutateur compilateur . Dans le Visual Studio IDE, vous pouvez le trouver dans la boîte de dialogue Propriétés du projet (sous Propriétés de configuration | C / C ++ | Langue | Désactiver les extensions de langue ).

Notez que pratiquement toutes les applications Windows Catégorie avec les extensions du compilateur de Microsoft activées; E.G., je ne pense pas que vous puissiez même consommer des en-têtes SDK Windows avec / ZA SET. Si votre code est vraiment strict ANSI, vous devriez être correct. Si vous avez quelques pièces spécifiques à Windows dans un projet qui est principalement strict ANSI, vous pouvez probablement isoler ces sources et construire uniquement ces fichiers source indivudes avec / za non défini.


1 commentaires

Vous êtes correct: et le commutateur compilateur / za déteste les uns les autres. Lien vers Microsoft Connect - Bug est Closed .