比方说我有一个数据类型,X我想知道它的大小而不声明该类型的变量或指针,当然不使用sizeof运算符.
这可能吗?我想过使用标准头文件,其中包含数据类型的大小和范围,但不适用于用户定义的数据类型.
我按照建议实现了sizeof .当我想打印变量的大小时它工作正常,但我不能将它用作数组大小.
这是代码:
#include <stdio.h>
#include <stdlib.h>
#define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var))
int s = 7;
void main()
{
int arr[sizeof(s)]; //works OK
int arr2[my_sizeof(s)];//error
printf("%d\n", my_sizeof(s));//works OK
int temp = 0;
}
Run Code Online (Sandbox Code Playgroud)
Error 1 error C2057: expected constant expression
Error 2 error C2466: cannot allocate an array of constant size 0
Error 3 error C2133: 'arr2' : unknown size
Run Code Online (Sandbox Code Playgroud)