Aracılığıyla paylaş


IntelliSense için bir 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 (.vcxproj dosyalarını temel alarak), proje özelliklerindeki ayarları ayarlayabilirsiniz. MSBuild olmayan projeler için, projenin kök dizinindeki CppProperties.json dosyasındaki ayarları 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 bazı IntelliSense desteği sağlar, ancak varsayılan olarak hata dalgalı çizgiler gösterilmez. 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 tüm dahil edilen üst bilgi dosyalarını görmek için açılan listeden Derleme + IntelliSense'i seçin:

VC++ IntelliSense in Error List

IntelliSense en fazla 1000 hata üretir. Bir kaynak dosyanın içerdiği üst bilgi dosyalarında 1000'den fazla hata varsa, kaynak dosya kaynak dosyanın en başında yalnızca tek bir hata dalgalı çizgi 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ı oluyor 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'da 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çip yolların doğru olduğunu doğrulayabilirsiniz.

VC++ Include Directories

VC_IncludePath gibi derleme makrolarının geçerli değerlerini görmek için Dizin ekle satırını seçin ve sağ taraftaki açılan menüye tıklayın. Ardından Düzenle'yi> seçin <ve Makrolar düğmesine tıklayın.

Derleme görevleri dosyası projeleri

NMake proje şablonunu temel alan Makefile projeleri için sol bölmede NMake'i seçin ve ardından IntelliSense kategorisinin altındaki Arama yolunu ekle'yi seçin:

Makefile project include paths

Klasörü Aç projeleri

CMake projeleri için, CMakeLists.txt dosyasındaki tüm yapılandırmalar için #include yolların doğru belirtildiğine emin olun. Diğer proje türleri için bir CppProperties.json dosyası gerekebilir. Daha fazla bilgi için bkz . CppProperties.json ile IntelliSense'i yapılandırma. Dosyada tanımlanan her yapılandırma için yolların doğru olduğundan emin olun.

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

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

Etiket ayrıştırıcısı, gözatma ve gezinti için kullanılan "benzer" bir C++ ayrıştırıcıdır. Çok 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. Gezinti Çubuğu en içteki makroyu gösteriyorsa geçerli işlev tanımı atlandı:

    Tag parser skips function definition

  2. IDE, önceden tanımlanmış bir işlev için işlev tanımı oluşturmayı sunar:

    Tag parser offers to define existing function

Bu tür sorunları düzeltmek için çözüm dizininizin köküne cpp.hint adlı 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 günlüğü ile proje ayarlarını doğrulama

IntelliSense derleyicisinin Yolları ve Önişlemci makroları dahil olmak üzere doğru derleyici seçeneklerini kullanıp kullanmadığını denetlemek için, Araçlar > Seçenekleri Metin Düzenleyicisi > C/C++ > Gelişmiş > Tanılama Günlüğü'nde IntelliSense komut satırlarının Tanılama Günlüğüne Kaydetme> özelliğini açın. Günlüğe Kaydetmeyi Etkinleştir'i True, Günlüğe Kaydetme Düzeyi'yi 5 (en ayrıntılı) ve Günlüğe Kaydetme Filtresi'yi 8 (IntelliSense günlüğü) olarak ayarlayın.

Çıkış Penceresi artık IntelliSense derleyicisine geçirilen komut satırlarını gösterir. Örnek çıktı aşağıdaki gibidir:

[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üğünde Ekleme yolu olarak /I\Include gösterildiyse, $(MyVariable) değerlendirilmedi ve son ekleme yolundan kaldırıldı demektir.

IntelliSense derlemesi 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 çekme veya git kullanıma alma komutu çalıştırdığınızda, Visual Studio'da dosyalardaki değişiklikleri algılamak bir saat kadar sürebilir. Çözüm Gezgini'da proje düğümüne sağ tıklayıp Çözümü Yeniden Tara'ya tıklayarak çözümdeki tüm dosyaların yeniden taraması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 dosyalarıdır. Visual Studio 2017 sürüm 15.6 ve sonraki sürümlerinde IntelliSense yalnızca derleme hataları Çıkış penceresine kaydedilir. Bunları görmek için Çıkışı göster seçeneğini Çözüm olarak ayarlayın:

Output window for solution errors

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.

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

TRACEDESIGNTIME ortam değişkeni hakkında daha fazla bilgi edinmek için bkz . Roslyn ve Ortak Proje Sistemi. Bu makalelerdeki bilgiler C++ projeleri için geçerlidir.