Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c+中声明变量+;我不想定义它,所以它不应该消耗任何内存只是声明?_C++ - Fatal编程技术网

C++ 如何在c+中声明变量+;我不想定义它,所以它不应该消耗任何内存只是声明?

C++ 如何在c+中声明变量+;我不想定义它,所以它不应该消耗任何内存只是声明?,c++,C++,当我们写int a时,编译器给int a提供内存,但现在我只想告诉编译器变量是整数,但不想编译器给a提供任何内存。如果它是一个全局变量,那么使用extern使它成为一个纯声明: extern int a; 如果程序使用它,它仍然需要在某个地方定义 如果它是一个局部变量,那么不定义它就不能声明它;它将在程序到达声明时创建。您可以这样说: extern int a; 这样,这里就不会为a分配存储空间,链接器在构建可执行文件时会在另一个模块中查找符号a。如果找不到,则会出现链接器错误。这是意料之中

当我们写int a时,编译器给int a提供内存,但现在我只想告诉编译器变量是整数,但不想编译器给a提供任何内存。

如果它是一个全局变量,那么使用
extern
使它成为一个纯声明:

extern int a;
如果程序使用它,它仍然需要在某个地方定义

如果它是一个局部变量,那么不定义它就不能声明它;它将在程序到达声明时创建。

您可以这样说:

extern int a;

这样,这里就不会为
a
分配存储空间,链接器在构建可执行文件时会在另一个模块中查找符号
a
。如果找不到,则会出现链接器错误。这是意料之中的,因为您不能有一个不存在的变量。

那么您希望它做什么?您打算如何使用一个没有分配存储的变量?@cdhowie:您可以在未计算的上下文中使用它,例如,作为
sizeof
decltype
@MikeSeymour
typedef
s的参数(或
使用
别名)也可以与
sizeof
一起使用,这会使
decltype
变得多余,是实现这一点的更好方法。