What does typedef int var[1]; do?
What does typedef int var[1]; do?
我遇到了以下代码:
typedef int var[1]; // or var[3]
它到底做什么?我不明白下标添加了什么,因为现在我可以为int 定义"var"
typedef
声明使用与普通变量声明相同的语法。不同之处在于,您没有声明"y
类型的名为x
的变量",而是声明了"x
类型,它是y
类型的同义词"。
因此,让我们从您的示例中删除typedef
,看看我们得到了什么:
int var[1];
var
是一个类型为int[1]
的变量,或者是一个int
的数组。如果我们将typedef
添加回:
typedef int var[1];
这使得CCD_ 11成为类型CCD_。
同样适用于其他类型的丑陋或复杂类型:
int (*fp)(int); // fp is a function pointer variable
typedef int (*fp)(int); // fp is a function pointer type
您可以通过使用声明为的identity
模板来避免这种混乱
template <typename T> struct identity { typedef T type; };
使用此模板,复杂类型或变量声明的含义将更加清晰。例如,我们可以这样声明我们的类型:
typedef identity<int[1] >::type var; // array type
typedef identity<int(*)(int)>::type fp; // function pointer type
由于变量声明使用与类型声明相同的语法,我们也可以使用identity
来声明具有复杂性的变量:
identity<int[1] >::type var; // array variable
identity<int(*)(int)>::type fp; // function pointer variable
var
是大小为1的int
数组的类型定义。
你可以写
var x;
并且CCD_ 17将是类型为CCD_
相关文章:
- What does SDL_PollEvent do?
- what does int(x) do?
- What does ~0 do?
- What does typedef int var[1]; do?
- What does initializer_list do?
- What does __uuidof(someVar) do?
- What does wxPuts do?
- c++ stl what does base() do
- what does clear() do?
- What does ret reinterpret_cast do?
- What does the int*. syntax do?
- What does ID3DX11EffectVariable::AsSharedResource() do?
- What does void Classname::operator()(){ .... } do?
- what does ++operator do in this void uart_puts(unsigned char
- What does AWT.GetDrawingSurface do?
- What does _stscanf_s do?
- What does STATIC_ASSERTION_FAILURE do?
- What does boost::asio::spawn do?
- what does ntohl(*(uint32_t*) ...)do?
- What does L do?