gpt4 book ai didi

c - 根据字符串输入返回 sizeof

转载 作者:太空狗 更新时间:2023-10-29 15:53:57 25 4
gpt4 key购买 nike

我正在寻找一种在 C 中拥有函数的方法,该函数接受定义特定变量类型的字符串作为输入。然后该函数返回该输入的 sizeof 结果,就好像字符串被评估为一种类型一样。考虑以下示例。

#include <stdint.h>

typedef struct my_struct {
int16_t var1;
int16_t var2;
int16_t var3;
} mystruct_t;

int main(int argc, char * argv[])
{
return sizeof(argv[1]); // THIS IS WRONG!!
}

然后用户可以编译它并尝试调用 ./myprogram my_struct_t,我希望这会在运行时在我的机器上返回 my_struct_t 的实际 C 字节大小。

我不确定的部分是,显然这会获取存储在 argv[1] 中的(指向)字符串的大小,而不是定义的类型的大小由字符串。我怎样才能进行这种转换?这可能吗?

最佳答案

您可以使用一系列 if 语句来完成。为您希望允许调用者指定的每种类型添加一个:

#include <stdint.h>
#include <string.h>

typedef struct my_struct {
int16_t var1;
int16_t var2;
int16_t var3;
} my_struct_t;

int main(int argc, char * argv[])
{

const char * str;

if ( argc <= 1 )
return -1;

str = argv[1];

if ( 0 == strcmp( str, "int" ) )
return sizeof( int );

if ( 0 == strcmp( str, "int16_t" ) )
return sizeof( int16_t );

if ( 0 == strcmp( str, "struct my_struct" ) )
return sizeof( struct my_struct );

if ( 0 == strcmp( str, "my_struct_t" ) )
return sizeof( my_struct_t );

return -1;
}

关于c - 根据字符串输入返回 sizeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com