The C language includes of global variables. In addition, many C programs contain functions with hundreds of lines of code. As a result, determining where a variable is declared can be a painful process, sometimes involving hunting through multiple files. Confusion and inaccuracy are particularly likely when a local variable shadows a global variable of the same name.
HyperCode makes the process of definition-hunting easy by providing links from variable uses to definition sites; using Mosaic, for instance, a user can click on any use of a variable in HyperCode in order to view its definition site. Using this feature, a user can instantly find the definition of any variable even when dealing with global variables, local variables shadowing globals, and/or long, messy functions.
As it does with functions and types, HyperCode provides links from variable definition sites to backtrace lists of usage sites; again, each element of a backtrace list is linked to the variable use in the code that it represents. These links can be used to explore how a particular variable is used; this is particularly useful when attempting to determine where and how a given global variable is utilized. A user might also make use of variable backtrace lists in conjunction with type backtrace lists to determine how every variable of a particular data type is used; the user can examine the context of every use of the selected type by first following the backtrace list from the type definition to each variable definition, then using the backtrace list from the variable definition to look up each use.