2016-05-30 8 views
6

C++ öğrenmeye başladım ve uyarı düzeyini artırmanın kodunuzu yazarken daha dikkatli olmanız gerektiğini okudum. Visual Studio 2015 (topluluk sürümü)Uyarı - Yönlendirilmemiş satır içi işlev silindi

kullanıyorum Ancak, bunu yaptıktan sonra, temel programlarda bile yüzlerce hata (düzenleme: hata olarak kabul edilir, üzgünüm) alırım. Bunların hepsi matematik başlığından geliyor ve "ilgisiz satır içi işlevi kaldırılmış" diyorlar. Kullanmadığım her yöntem bir uyarıya neden oluyor gibi görünüyor.

Bu neden oluyor ve nasıl düzeltebilirim?

+1

aldığınız bu hataların bazıları gösterin. –

+0

Tek düzeltme, '/ WAll' kullanmak değil, ne yazık ki. – alain

+0

* "hataları açmak" yapamazsınız *. Hatalar hatalardır ve bir hatanın ne olup olmadığına karar vermezler (yalnızca istisna: * Uyarıları hata * seçeneği olarak ele al). * Uyarı * seviyesini arttırabilirsiniz. Söz konusu olan buysa, lütfen sorunuzu güncelleyin. – IInspectable

cevap

11

Visual C++ ile /W4, /Wall kullanamazsınız, kullanamazsınız. Uyarı seviyesi 4 hala sillywarning üretirse, ör. Standart başlıklardan sonra eski MSVC "no sillywarnings" header'u kullanmayı veya uygun bir uzantı kullanmayı düşünün. Tercihen bir zorla dahil derleyici seçeneği ile. Genellikle aşağıdaki ortam değişkeni kullanan komut satırında Visual C++ ile çalışan için

:

 
CL=/nologo /EHsc /GR /W4 /FI "iso646.h" 

Anlaşılan artık sistem başlıklarından uyarıların otomatik bastırma vardır, bu yüzden bir sorun değil.


bir fiilen standart C++ derleyicileri ve bağlayıcılar ayırt olarak kutsal C++ standart, teşhis farklı türde arasında ayrım yapmaz ise lütfen unutmayın Hatalar

    • arası:
      Bir hata teşhisi, hiçbir yürütülebilir dosyanın (veya nesne dosyasının) üretilmediği anlamına gelir.

    • Uyarılar: bir şey en azından yanlış olma olasılığı, ya
      bir uyarı teşhis aracı biraz tartışmalı, ama derleyici veya bağlayıcı veya başka araç, yaptıklarını biliyordu varsayarak devam ettiler.

      msvc_less_errors_as_warnings_please.hpp
      #pragma once 
      // p/cppx/core_language_support/compiler_specific/msvc_less_errors_as_warnings_please.hpp 
      // Copyright © Alf P. Steinbach 2015. Boost Software License 1.0. 
      
      #ifndef _MSC_VER 
      # error This file is specific to the MSVC (Microsoft Visual C++) compiler. 
      #endif 
      
      #pragma warning(error: 4566)  // Character ... cannot be represented -- is error. 
      #pragma warning(error: 4627)  // Source code has been ignored – is error. 
      
      : yapabilecekleriniz


    İlgili MSVC özgü başlıkları (opsiyon /FI), bir daha hiçbir sillywarnings sürümünü bugüne kadar başlık dahil zorla dahil msvc_more_warnings_please.hpp

    #pragma once 
    // p/cppx/core_language_support/compiler_specific/msvc_more_warnings_please.hpp 
    // Copyright © Alf P. Steinbach 2015. Boost Software License 1.0. 
    
    #ifndef _MSC_VER 
    # error This file is specific to the MSVC (Microsoft Visual C++) compiler. 
    #endif 
    
    #pragma warning(push, 4)  // Warning level 4 (max). MSVC /Wall is impractical. 
    
    msvc_no_sillywarnings_please.hpp
    #pragma once 
    // p/cppx/core_language_support/compiler_specific/msvc_no_sillywarnings_please.hpp 
    // Copyright © Alf P. Steinbach 2010 – 2015. Boost Software License 1.0. 
    
    #ifndef _MSC_VER 
    # error This file is specific to the MSVC (Microsoft Visual C++) compiler. 
    #endif 
    
    #ifndef CPPX_ALLOW_WP64 
    # // The /Wp64 option generates spurious warnings when a __w64 type argument selects 
    # // a correct overload with non-__w64 formal argument type, i.e. for <<. In newer 
    # // versions of MSVC this option is deprecated. It Really Annoyed a lot of people! 
    # ifdef _Wp64 
    #  error Do not use the /Wp64 option: use a 64-bit compiler to detect 64-bit portability issues. 
    # endif 
    #endif 
    
    // The following are real warnings but are generated by almost all MS headers, including 
    // standard library headers, so it's impractical to leave them on. 
    #pragma warning(disable: 4619) // there is no warning number 'XXXX' 
    #pragma warning(disable: 4668) // XXX is not defined as a preprocessor macro 
    
    // The following are pure sillywarnings: 
    #pragma warning(disable: 4061) // enum value is not *explicitly* handled in switch 
    #pragma warning(disable: 4063) // case 'nn' is not a valid value for switch of enum 'Name' 
    #pragma warning(disable: 4099) // first seen using 'struct' now seen using 'class' 
    #pragma warning(disable: 4127) // conditional expression is constant 
    #pragma warning(disable: 4180) // qualifier applied to function type has no meaning 
    #pragma warning(disable: 4217) // member template isn't copy constructor 
    #pragma warning(disable: 4250) // inherits (implements) some member via dominance 
    #pragma warning(disable: 4251) // needs to have dll-interface to be used by clients 
    #pragma warning(disable: 4275) // exported class derived from non-exported class 
    #pragma warning(disable: 4347) // "behavior change", function called instead of template 
    #pragma warning(disable: 4355) // "'this': used in member initializer list 
    #pragma warning(disable: 4373) // override when arg types differ by const/volatile qualifiers 
    #pragma warning(disable: 4428) // MSVC 9: universal-character-name encountered in source 
    #pragma warning(disable: 4459) // local declaration hides global declaration 
    #pragma warning(disable: 4505) // unreferenced function has been removed 
    #pragma warning(disable: 4510) // default constructor could not be generated 
    #pragma warning(disable: 4511) // copy constructor could not be generated 
    #pragma warning(disable: 4512) // assignment operator could not be generated 
    #pragma warning(disable: 4513) // destructor could not be generated 
    #pragma warning(disable: 4610) // can never be instantiated user defined constructor required 
    #pragma warning(disable: 4623) // default constructor could not be generated 
    #pragma warning(disable: 4624) // destructor could not be generated 
    #pragma warning(disable: 4625) // copy constructor could not be generated 
    #pragma warning(disable: 4626) // assignment operator could not be generated 
    #pragma warning(disable: 4640) // a local static object is not thread-safe 
    #pragma warning(disable: 4646) // noreturn function should have a void return type 
    #pragma warning(disable: 4661) // a member of the template class is not defined. 
    #pragma warning(disable: 4670) // a base class of an exception class is inaccessible for catch 
    #pragma warning(disable: 4672) // a base class of an exception class is ambiguous for catch 
    #pragma warning(disable: 4673) // a base class of an exception class is inaccessible for catch 
    #pragma warning(disable: 4675) // resolved overload was found by argument-dependent lookup 
    #pragma warning(disable: 4702) // unreachable code, e.g. in <list> header. 
    #pragma warning(disable: 4710) // call was not inlined 
    #pragma warning(disable: 4711) // call was inlined 
    #pragma warning(disable: 4820) // some padding was added 
    #pragma warning(disable: 4917) // a GUID can only be associated with a class, interface or namespace 
    #pragma warning(disable: 4996) // MSVC 9: a C stdlib function has been "deprecated" (says MS)