C++ 如何在c+中声明变量+;我不想定义它,所以它不应该消耗任何内存只是声明?
当我们写int a时,编译器给int a提供内存,但现在我只想告诉编译器变量是整数,但不想编译器给a提供任何内存。如果它是一个全局变量,那么使用C++ 如何在c+中声明变量+;我不想定义它,所以它不应该消耗任何内存只是声明?,c++,C++,当我们写int a时,编译器给int a提供内存,但现在我只想告诉编译器变量是整数,但不想编译器给a提供任何内存。如果它是一个全局变量,那么使用extern使它成为一个纯声明: extern int a; 如果程序使用它,它仍然需要在某个地方定义 如果它是一个局部变量,那么不定义它就不能声明它;它将在程序到达声明时创建。您可以这样说: extern int a; 这样,这里就不会为a分配存储空间,链接器在构建可执行文件时会在另一个模块中查找符号a。如果找不到,则会出现链接器错误。这是意料之中
extern
使它成为一个纯声明:
extern int a;
如果程序使用它,它仍然需要在某个地方定义
如果它是一个局部变量,那么不定义它就不能声明它;它将在程序到达声明时创建。您可以这样说:
extern int a;
这样,这里就不会为
a
分配存储空间,链接器在构建可执行文件时会在另一个模块中查找符号a
。如果找不到,则会出现链接器错误。这是意料之中的,因为您不能有一个不存在的变量。那么您希望它做什么?您打算如何使用一个没有分配存储的变量?@cdhowie:您可以在未计算的上下文中使用它,例如,作为sizeof
或decltype
@MikeSeymourtypedef
s的参数(或使用
别名)也可以与sizeof
一起使用,这会使decltype
变得多余,是实现这一点的更好方法。