Aracılığıyla paylaş


IntelliSense için C++ projesi yapılandırma

Bazı durumlarda IntelliSense'in düzgün çalışmasını sağlamak için C++ projenizi el ile yapılandırmanız gerekebilir. MSBuild projeleri için (dosyalara göre .vcxproj ), proje özelliklerindeki ayarları ayarlayabilirsiniz. MSBuild olmayan projelerde CppProperties.json , dosyanın ayarlarını projenin kök dizininde ayarlarsınız. Bazı durumlarda, IntelliSense'in makro tanımlarını anlamasına yardımcı olmak için bir ipucu dosyası oluşturmanız gerekebilir. Visual Studio IDE, IntelliSense sorunlarını belirlemenize ve çözmenize yardımcı olur.

Tek dosyalı IntelliSense

Projeye dahil olmayan bir dosyayı açtığınızda, Visual Studio IntelliSense desteği sağlar ancak varsayılan olarak hata altı çizgileri göstermez. Gezinti Çubuğu'ndaÇeşitli Dosyalar yazıyorsa, bu büyük olasılıkla neden yanlış kod altında hata dalgalı çizgiler görmediğinizi veya önişlemci makronun neden tanımlanmadığını açıklar.

Hata Listesini Denetleme

Bir dosya tek dosya modunda açık değilse ve IntelliSense düzgün çalışmıyorsa, denetlenecek ilk yer Hata Listesi penceresidir. Geçerli kaynak dosyanın tüm IntelliSense hatalarını ve dahil edilen tüm üst bilgi dosyalarını görmek için açılan listeden Derleme + IntelliSense seçeneğini seçin.

Hata Listesi penceresinin ekran görüntüsü. Filtre açılır listesinden Derleme + IntelliSense seçilidir.

IntelliSense en fazla 1.000 hata üretir. Bir kaynak dosyanın dahil ettiği başlık dosyalarında 1.000'den fazla hata varsa, kaynak dosya, dosyanın en başında yalnızca tek bir hata dalgalı çizgisi gösterir.

#include yollarının doğru olduğundan emin olun

MSBuild projeleri

Derlemelerinizi Visual Studio IDE dışında çalıştırırsanız ve derlemeleriniz başarılı oluyorsa ancak IntelliSense yanlışsa, komut satırınız bir veya daha fazla yapılandırmanın proje ayarlarıyla eşitlenmemiş olabilir. Çözüm Gezgini proje düğümüne sağ tıklayın ve tüm #include yollarının geçerli yapılandırma ve platform için doğru olduğundan emin olun. Yollar tüm yapılandırmalarda ve platformlarda aynıysa, Tüm yapılandırmalar ve Tüm platformlar’ü seçebilir ve ardından yolların doğru olduğunu doğrulayabilirsiniz.

Yapılandırma Özellikleri bölümündeki Dizinleri Ekle ayarını gösteren ekran görüntüsü.

VC_IncludePath gibi derleme makrolarının geçerli değerlerini görmek için Dizinleri Ekle açılan listesini seçin. <Ardından Düzenle> ve Makrolar düğmesini seçin.

Makefile projeleri

NMake proje şablonunu temel alan Makefile projeleri için Yapılandırma Özellikleri'nin altında NMake'yi seçin ve ardından IntelliSense kategorisinde Arama yolunu ekle'yi seçin:

Yapılandırma Özellikleri > N Arama Yolunu Dahil Et > ayarını gösteren ekran görüntüsü.

CMake projeleri

CMake projeleri için, içindeki tüm yapılandırmalar CMakeLists.txtiçin #include yollarının doğru belirtildiğine emin olun. Diğer proje türleri bir CppProperties.json dosya gerektirebilir. Daha fazla bilgi için bkz . CppProperties.jsonile kod gezintisini yapılandırma . Dosyada tanımlanan her yapılandırma için yolların doğru olduğundan emin olun.

Dosyada CppProperties.json söz dizimi hatası varsa, etkilenen dosyalardaki IntelliSense yanlıştır. Visual Studio, hatayı Çıkış Penceresi'nde görüntüler.

Etiket ayrıştırıcı sorunları

Etiket ayrıştırıcısı, göz atma ve gezinti için kullanılan bulanık bir C++ ayrıştırıcıdır. Hızlıdır ancak her kod yapısını tamamen kavramaya çalışmaz.

Örneğin, ön işlemci makrolarını değerlendirmez ve bu nedenle bunları yoğun şekilde kullanan kodu yanlış ayrıştırabilir. Etiket Ayrıştırıcısı tanıdık olmayan bir kod yapısıyla karşılaştığında, kodun tüm bölgesini atlayabilir.

Bu sorunun Visual Studio'da bildirildiği iki yaygın yol vardır:

  1. IDE, zaten tanımlanmış bir işlev için işlev tanımı oluşturmayı sunar.

  2. Gezinti çubuğunda en içteki bir makro gösterildiyse geçerli işlev tanımı atlandı:

    İşlev tanımını atlayan etiket ayrıştırıcısını gösteren ekran görüntüsü.

    Kod parçacığı, işlev main içinde kullanılan do_if için bir makro tanımı gösterir. Etiket ayrıştırıcısı makroyu anlamadığından, geçerli işlevin adının ana olduğunu gösteren gezinti açılan listesi yerine makronun adını gösterir: do_if.

Bu tür sorunları düzeltmek için çözüm dizininizin köküne adlı cpp.hint bir dosya ekleyin. Daha fazla bilgi için bkz. İpucu Dosyaları.

Etiket ayrıştırıcı hataları Hata Listesi penceresinde görüntülenir.

Tanılama kaydı kullanarak proje ayarlarını doğrulayın

IntelliSense derleyicisinin Dahil Etme Yolları ve Önişlemci makroları da dahil olmak üzere doğru derleyici seçeneklerini kullanıp kullanmadığını denetlemek için IntelliSense komut satırlarının Tanılama Günlüğünü Etkinleştirin.

  1. Araçlar>Seçenekleri bölmesini açın ve Tüm Ayarlar>Dilleri>C/C++>IntelliSense>Tanılama günlüğü bölümünü genişletin.

  2. Tanılama bilgilerini çıkış penceresine kaydet onay kutusunu seçin.

  3. Günlük kaydı seviyesi değerini 5 (en ayrıntılı) olarak ayarlayın.

  4. Günlük filtresi değerini 8 (IntelliSense günlüğü) olarak ayarlayın.

  1. Araçlar>Seçenekleri iletişim kutusunu açın ve Metin Düzenleyicisi>C/C++>Gelişmiş bölümünü genişletin.

  2. Tanılama Günlüğü grubunda, Günlüğü Etkinleştir seçeneğini 'True' olarak ayarlayın.

  3. Günlük Düzeyi değerini 5 (en ayrıntılı) olarak ayarlayın.

  4. Günlük Filtresi değerini 8 (IntelliSense günlüğü) olarak ayarlayın.

  5. Tamam'ı seçin.

Çıkış Penceresi artık IntelliSense derleyicisine geçirilen komut satırlarını gösterir. Aşağıda örnek bir çıkış verilmişti:

[IntelliSense] Configuration Name: Debug|Win32
[IntelliSense] Toolset IntelliSense Identifier:
[IntelliSense] command line options:
/c
/I.
/IC:\Repo\Includes
/DWIN32
/DDEBUG
/D_DEBUG
/Zc:wchar_t-
/Zc:forScope
/Yustdafx.h

Bu bilgiler IntelliSense'in neden yanlış bilgiler sağladığını anlamanıza yardımcı olabilir. Örneğin, projenizin Include dizini $(MyVariable)\Include içeriyorsa ve tanılama günlüğü /I\Include olarak bir Ekleme yolu gösteriyorsa, bu, $(MyVariable)'nin değerlendirilmediği ve son ekleme yolundan kaldırıldığı anlamına gelir.

IntelliSense yapısı hakkında

Visual Studio, tüm IntelliSense özelliklerini destekleyen veritabanını oluşturmak ve korumak için ayrılmış bir C++ derleyicisi kullanır. IntelliSense veritabanını kodla eşitlenmiş durumda tutmak için Visual Studio, proje ayarlarında veya kaynak dosyalarda yapılan bazı değişikliklere yanıt olarak IntelliSense yalnızca derlemelerini otomatik olarak arka plan görevleri olarak başlatır.

Ancak bazı durumlarda Visual Studio, IntelliSense veritabanını zamanında güncelleştiremeyebilir. Örneğin, bir git pull veya git checkout komutu çalıştırdığınızda Visual Studio'da dosyalardaki değişikliklerin algılanabilir olması bir saat kadar sürebilir. Çözüm Gezgini 'nde proje düğümüne sağ tıklayıp "Çözümü Yeniden Tara" seçeneğini seçerek çözümdeki tüm dosyaların yeniden taranmasını zorlayabilirsiniz.

IntelliSense derleme hatalarını giderme

IntelliSense derlemesi ikili dosyalar oluşturmaz, ancak yine de başarısız olabilir. Hatanın olası nedenlerinden biri özel .props veya .targets dosyalardır. Visual Studio 2017 sürüm 15.6 ve sonraki sürümlerinde yalnızca IntelliSense derleme hataları Çıkış penceresine kaydedilir. Bunları görmek için Çıkışı göster seçeneğiniÇözüm olarak ayarlayın:

Çıkış penceresini gösteren ekran görüntüsü. Açılan listeden çıkışı göster ayarı Çözüm olarak ayarlanmıştır.

Hata iletisi, tasarım zamanı izlemeyi etkinleştirmenizi isteyebilir:

error: Designtime build failed for project 'E:\src\MyProject\MyProject.vcxproj',
configuration 'Debug|x64'. IntelliSense might be unavailable.
Set environment variable TRACEDESIGNTIME=true and restart
Visual Studio to investigate.

Ortam değişkenini TRACEDESIGNTIME true olarak ayarlar ve Visual Studio'yu yeniden başlatırsanız, dizinde derleme hatasını %TEMP% tanılamaya yardımcı olabilecek bir günlük dosyası görürsünüz.

Ortam değişkeni TRACEDESIGNTIME hakkında daha fazla bilgi edinmek için Roslyn ve Tasarım zamanı derlemeleri kısmına bakın. Bu makalelerdeki bilgiler C++ projeleri için geçerlidir.