ID: Q117150
1.00 1.50 WINDOWS kbtool kbbuglist
The information in this article applies to:
If a C++ application has a global structure containing member arrays whose total size exceeds 32K, expanding a member of the structure in the watch window will cause a CXX0030 error message, "expression not evaluatable", to display if the starting address of the member is over 0x7FFF from the beginning of the structure. This happens both in CodeView for Windows and the Visual Workbench integrated debugger.
CodeView for MS-DOS behaves a little differently; while the structure member can be expanded, the values displayed are incorrect.
NOTE: This problem does not occur for C applications.
Microsoft has confirmed this to be a bug with Visual C++ for Windows, versions 1.0 and 1.5. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
This is not a problem in Visual C++ 32-bit Edition, version 1.0.
Go through the following steps to reproduce the problem, using the sample code below:
1. Build a debug version of the program.
2. Run it past the initialization of the structure "teststruct".
3. Add a watch on teststruct.
4. Expand teststruct and then "teststruct.c".
/* Compile options needed: /Zi /Od /Tp
*/
struct test
{
char a[16384];
char b[16384]; // If changed to b[16383],
char c[10000]; // expanding c works correctly.
} teststruct;
void main( void )
{
teststruct.c[0] = 'A';
} // Break here, set a watch on teststruct, expand c.
Additional reference words: 1.00 1.50 4.00 4.01 4.10
KBCategory: kbtool kbbuglist
KBSubcategory: WBDebug
Keywords : kb16bitonly
Last Reviewed: July 23, 1997