In C/C++, Visual Assist extracts symbol declarations from the header files included by your code. Visual Assist does not ship with pre-built databases of symbols.
Visual Assist must find header files beyond the directories searched during a build because the complete path of directories for a build is determined only when a build begins, not during edit when Visual Assist is active.
The C/C++ Directories node in the options dialog for Visual Assist tells Visual Assist where to find header files, and which of the header files should be re-parsed frequently versus infrequently. For most users and environments, the default values in the C/C++ Directories node are correct and do not need modification.
System Symbols
Visual Assist considers system symbols to be those declared in include directories found via project settings, plus those declared in \Program Files, even if the headers are part of a solution. Declarations of system symbols are stored in a fast-access, read-only database shared among all solutions.
Parsing of the system include files occurs after you install a new build of Visual Assist, and after you press Rebuild on the Performance node of the options dialog.
Dynamic Symbols
Visual Assist considers symbols declared in directories found via project settings—available only to a project—as dynamic. Declarations of these symbols are stored in a read-write database. Parsing of the dynamic include files occurs when you open a project for the first time, and any time you modify one of its header files.
Proper Configuration of C/C++ Directories
Proper setup of the C/C++ Directories node is essential for proper operation of Visual Assist. Incorrect setup causes Visual Assist to find outdated or wrong versions of header files, find no header files at all, or not recognize modifications in a timely manner.
Settings are incorrect if:
- an excessive number of symbols are unknown
- modifications to header files are not recognized immediately
- system files are parsed often
If any of these problems occur, ensure your IDE and project settings are correct. If they appear correct and Visual Assist still finds outdated or wrong versions of header files, contact technical support for assistance. In unusual environments, you may need to switch to custom settings in the C/C++ Directories node of the Visual Assist options dialog.
Default C/C++ Directories
Visual Studio 2010 and newer
Visual Assist builds default paths of directories when you load your project. Values are extracted from environment variables and project settings.
Symbols declared in header files listed in the VC++ Directories of project properties are considered system symbols.
Visual Studio 2008 and older
Visual Assist builds default paths of directories when you start your IDE. Values are extracted from IDE settings, environment variables, and project settings.
Directories of header files listed in IDE settings that are common to all projects are considered system symbols (Tools | Options | Projects and Solutions | VC++ Directories | Include files).
Directories of header files defined in Additional Include Directories in project properties are considered dynamic symbols.
Custom Directories for Non-Microsoft Build Processes
Albeit unusual, there are some environments in which default directory settings are insufficient. Users for whom defaults are insufficient typically:
- use a Microsoft IDE for editing of non-Microsoft projects, in which case IDE settings are blank
- configure IDE settings improperly
If you are unsure, contact technical support at Whole Tomato Software for clarification and guidance.
Create custom directories by changing platform to Custom on the C/C++ Directories node of the Visual Assist options dialog.
When platform is Custom, the directory list is no longer read-only. The initial values for Custom are the directories in use currently, and if a project is open, include the directories in project settings.
When creating custom lists, place directories in either the System or Other list. Directories with header files that rarely change, e.g. BOOST, are system; directories with header files that change more frequently are "Other".
Omit directories specified in IDE settings associated with your projects, as Visual Assist finds them independent of custom lists. Include only directories not found in projects or IDE settings. Specify directories in the order in which they should be searched.
Use the icons to copy and paste if you must edit or include numerous directories.
Press the Rebuild button on the Performance node of the Visual Assist options dialog to make Visual Assist recognize changes to your custom settings.
You can create only one set of custom directories, but you can switch between custom and non-custom directories without losing your settings.
Support for Multiple Platforms
Developers who create software for multiple platforms typically have separate header files for each platform supported. If you develop for multiple platforms, you must indicate to Visual Assist the platform whose code you are currently editing. Visual Assist will search the directories appropriate for the platform and display definitions you expect.
Building for a specific platform does not change the platform whose code Visual Assist assumes you are editing. If you need definitions for a different platform, change the platform setting in the C/C++ Directories node and restart your IDE.
Visual Studio 2010 and newer
Default behavior limits platforms to Win32 and x64. Edit the registry to change setting.
Support for Folder-Based Solutions
Visual Studio 2017
Visual Assist supports the opening of a folder of code that does not include a project or solution file. When editing such code, system symbols are those found using the directory settings of the Win32 platform defined in the most recently opened solution.
External Modification of Source
If external applications modify your source when your IDE is active and a project is open, you must enable "Watch for externally modified files" in the options dialog of Visual Assist if you want Visual Assist to recognize the changes immediately. If not, Visual Assist will recognize the changes when you reload your project.
Visual Studio 2005 and newer
If you use property sheets to specify directories, you must save the sheets before Visual Assist detects external changes to header files.
Registry Settings