isDefined函数?

Nar*_*rek 0 c++

在C++中,有任何函数在定义变量时返回"true",反之亦然.像这样的东西:

bool isDefined(string varName)
{
    if (a variable called "varName" is defined)
      return true;
    else
      return false;
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ker 11

C++不是一种动态语言.这意味着答案是否定的.你在编译时知道这一点,而不是运行时.

  • 静态/动态与此问题正交.静态语言当然可以支持运行时系统,在该系统中跟踪已知变量.Java是一种静态语言,可以通过反射来查询变量是否定义为例. (3认同)

Ark*_*nez 6

在运行时没有这样的东西,因为它在非动态语言中没有意义,如C++.

但是,您可以在sizeof中使用它来测试它是否在编译时存在而没有副作用.

(void)sizeof(variable);
Run Code Online (Sandbox Code Playgroud)

如果var不存在,那将停止编译.

  • 实际上,除非我弄错了,否则它是在编译时.sizeof是一个操作符,就像你不能做的那样:x ++没有定义x,你不能在没有定义x的情况下做sizeof(x). (3认同)