vc6.0调试时namespace中全局变量不能查看
#include<stdio.h>
namespace n1
{
int x;
}
void pp()
{
printf("x is %d\n",n1::x);
}
void main()
{
n1::x=2;
pp();
}
#include<stdio.h>
namespace n1
{
int x;
}
void pp()
{
printf("x is %d\n",n1::x);
}
void main()
{
n1::x=2;
pp();
}
调试时,可以在watch窗口中看见n1::x的值,但如果用using namespace n1;的话,在watch窗口中就不会显示x的值,而是会提示cx0017:error :symbol "x" not found,但如不定义n1,而直接定义全局变量x,则鼠标悬停时和watch窗口都会显示x的值,
使用using namespace n1后,如想在watch窗口中观察x值,应该加::修饰符。
逻辑上这也是合理的,如果不加::修饰符,当再有另外一个名字空间中存在x变量,watch窗口将无法区分。
本文探讨了在VC6.0环境下调试时,使用名字空间(namespace)中的全局变量遇到的问题。当使用using声明引入名字空间后,无法直接在监视窗口观察到全局变量的值,需要使用作用域解析运算符(::)来明确指定。文章还对比了不同情况下全局变量显示的行为差异。
2781

被折叠的 条评论
为什么被折叠?



