Mengonfigurasi proyek C++ untuk IntelliSense

Dalam beberapa kasus, Anda mungkin perlu mengonfigurasi proyek C++ Anda secara manual agar IntelliSense berfungsi dengan baik. Untuk proyek MSBuild (berdasarkan file .vcxproj), Anda dapat menyesuaikan pengaturan di properti proyek. Untuk proyek non-MSBuild, Anda menyesuaikan pengaturan dalam file CppProperties.json di direktori akar proyek. Dalam beberapa kasus, Anda mungkin perlu membuat file petunjuk untuk membantu IntelliSense memahami definisi makro. IDE Visual Studio membantu Anda mengidentifikasi dan memperbaiki masalah IntelliSense.

IntelliSense file tunggal

Saat Anda membuka file yang tidak disertakan dalam proyek, Visual Studio menyediakan beberapa dukungan IntelliSense tetapi secara default tidak ada squiggle kesalahan yang ditampilkan. Jika Bilah Navigasi mengatakan File Lain-lain, maka itu mungkin menjelaskan mengapa Anda tidak melihat kesalahan berlekuk di bawah kode yang salah, atau mengapa makro praprosesor tidak ditentukan.

Periksa Daftar Kesalahan

Jika file tidak terbuka dalam mode file tunggal, dan IntelliSense tidak berfungsi dengan benar, tempat pertama yang harus diperiksa adalah jendela Daftar Kesalahan. Untuk melihat semua kesalahan IntelliSense untuk file sumber saat ini bersama dengan semua file header yang disertakan, pilih Build + IntelliSense di menu dropdown:

VC++ IntelliSense in Error List

IntelliSense menghasilkan maksimum 1000 kesalahan. Jika ada lebih dari 1000 kesalahan dalam file header yang disertakan oleh file sumber, maka file sumber hanya menunjukkan satu kesalahan berlekuk pada awal file sumber.

Pastikan jalur #include sudah benar

Proyek MSBuild

Jika Anda menjalankan build di luar VISUAL Studio IDE, dan build Anda berhasil tetapi IntelliSense salah, ada kemungkinan baris perintah Anda tidak sinkron dengan pengaturan proyek untuk satu atau beberapa konfigurasi. Klik kanan pada simpul proyek di Penjelajah Solusi dan pastikan bahwa semua jalur #include benar untuk konfigurasi dan platform saat ini. Jika jalurnya identik di semua konfigurasi dan platform, Anda dapat memilih Semua konfigurasi dan Semua platform lalu memverifikasi bahwa jalur sudah benar.

VC++ Include Directories

Untuk melihat nilai saat ini untuk makro build seperti VC_IncludePath, pilih baris Sertakan Direktori dan klik menu dropdown di sebelah kanan. Lalu pilih <Edit> dan klik tombol Makro .

Proyek makefile

Untuk proyek Makefile yang didasarkan pada templat proyek NMake, pilih NMake di panel kiri lalu pilih Sertakan jalur pencarian di bawah kategori IntelliSense :

Makefile project include paths

Buka proyek Folder

Untuk proyek CMake, pastikan bahwa jalur #include ditentukan dengan benar untuk semua konfigurasi di CMakeLists.txt. Jenis proyek lain mungkin memerlukan file CppProperties.json. Untuk informasi selengkapnya, lihat Mengonfigurasi IntelliSense dengan CppProperties.json. Pastikan bahwa jalur sudah benar untuk setiap konfigurasi yang ditentukan dalam file.

Jika ada kesalahan sintaks dalam file CppProperties.json, IntelliSense dalam file yang terpengaruh akan salah. Visual Studio akan menampilkan kesalahan di Jendela Output.

Masalah pengurai tag

Pengurai tag adalah pengurai C++ "fuzzy" yang digunakan untuk penjelajahan dan navigasi. Ini sangat cepat tetapi tidak mencoba untuk sepenuhnya memahami setiap konstruksi kode.

Misalnya, ini tidak mengevaluasi makro praprosesor, dan oleh karena itu mungkin salah mengurai kode yang memanfaatkannya dengan berat. Ketika Pengurai Tag menemukan konstruksi kode yang tidak dikenal, itu dapat melewati seluruh wilayah kode tersebut.

Ada dua cara umum di mana masalah ini bermanifestasi di Visual Studio:

  1. Jika Bilah Navigasi memperlihatkan makro paling dalam, maka definisi fungsi saat ini dilewati:

    Tag parser skips function definition

  2. IDE menawarkan untuk membuat definisi fungsi untuk fungsi yang sudah ditentukan:

    Tag parser offers to define existing function

Untuk memperbaiki masalah semacam ini, tambahkan file bernama cpp.hint ke akar direktori solusi Anda. Untuk informasi selengkapnya, lihat File Petunjuk.

Kesalahan pengurai tag muncul di jendela Daftar Kesalahan.

Memvalidasi pengaturan proyek dengan pembuatan log diagnostik

Untuk memeriksa apakah pengkompilasi IntelliSense menggunakan opsi pengkompilasi yang benar, termasuk Sertakan Jalur dan makro Praprosesor, aktifkan Pengelogan Diagnostik baris perintah IntelliSense di Editor > Teks Opsi > Alat > C/C++ > Pengelogan Diagnostik Tingkat Lanjut>. Atur Aktifkan Pengelogan ke True, Tingkat Pengelogan ke 5 (paling verbose), dan Filter Pengelogan ke 8 (pengelogan IntelliSense).

Jendela Output sekarang akan menampilkan baris perintah yang diteruskan ke pengkompilasi IntelliSense. Berikut adalah hasil sampelnya:

[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

Informasi ini dapat membantu Anda memahami mengapa IntelliSense memberikan informasi yang tidak akurat. Misalnya, jika direktori Sertakan proyek Anda berisi $(MyVariable)\Include, dan log diagnostik menunjukkan /I\Include sebagai jalur Sertakan, artinya $(MyVariable) tidak dievaluasi, dan dihapus dari jalur sertakan akhir.

Tentang build IntelliSense

Visual Studio menggunakan pengkompilasi C++ khusus untuk membuat dan memelihara database yang mendukung semua fitur IntelliSense. Agar database IntelliSense tetap sinkron dengan kode, Visual Studio secara otomatis meluncurkan build khusus IntelliSense sebagai tugas latar belakang sebagai respons terhadap perubahan tertentu yang dibuat dalam pengaturan proyek atau file sumber.

Namun, dalam beberapa kasus Visual Studio mungkin tidak memperbarui database IntelliSense secara tepat waktu. Misalnya, saat Anda menjalankan perintah git pull atau git checkout , Visual Studio mungkin memerlukan waktu hingga satu jam untuk mendeteksi perubahan dalam file. Anda dapat memaksa pemulaian ulang semua file dalam solusi dengan mengklik kanan pada simpul proyek di Penjelajah Solusi dan memilih Rescan Solution.

Pemecahan masalah kegagalan build IntelliSense

Build IntelliSense tidak menghasilkan biner, tetapi masih dapat gagal. Salah satu kemungkinan penyebab kegagalan adalah file .props atau .targets kustom. Di Visual Studio 2017 versi 15.6 dan yang lebih baru, kesalahan build khusus IntelliSense dicatat ke jendela Output. Untuk melihatnya, atur Tampilkan output dari ke Solusi:

Output window for solution errors

Pesan kesalahan mungkin menginstruksikan Anda untuk mengaktifkan pelacakan waktu desain:

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.

Jika Anda mengatur variabel lingkungan TRACEDESIGNTIME ke true dan menghidupkan ulang Visual Studio, Anda akan melihat file log di direktori %TEMP%, yang mungkin membantu mendiagnosis kegagalan build.

Untuk mempelajari selengkapnya tentang variabel lingkungan TRACEDESIGNTIME, lihat Roslyn dan Common Project System. Informasi dalam artikel ini relevan untuk proyek C++.