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:
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_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:
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:
Gezinti Çubuğu en içteki makroyu gösteriyorsa geçerli işlev tanımı atlandı:
IDE, önceden tanımlanmış bir işlev için işlev tanımı oluşturmayı sunar:
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:
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.