c# 我在norminette中遇到错误,因为我的代码超过25行

pxq42qpu  于 2023-01-10  发布在  C#
关注(0)|答案(1)|浏览(194)
void    set_default(t_fdf *data, char **av)
{
    read_map(data, av[1]); *-> dont care this func*
    if (data->map_size <= 500)
    {
        data->window_x = 960;
        data->window_y = 540;
        data->zoom = 30;
        data->depth = 2;
    }
    else if (data->map_size <= 3000)
    {
        data->window_x = 1280;
        data->window_y = 720;
        data->zoom = 20;
        data->depth = 15;
    }
    else if (data->map_size <= 5000)
    {
        data->window_x = 1366;
        data->window_y = 768;
        data->zoom = 20;
        data->depth = 10;
    }
    else if (data->map_size <= 10000)
    {
        data->window_x = 1600;
        data->window_y = 900;
        data->zoom = 10;
        data->depth = 5;
    }
    else
    {
        data->window_x = 1720;
        data->window_y = 900;
        data->zoom = 5;
        data->depth = 4;
    }
}

我想缩短这段代码。我可以创建一个额外的函数。但这个函数是禁止采取超过4个参数。我需要到地方的值 根据Map的大小变化到我的数据中。

lsmepo6l

lsmepo6l1#

例如,定义t_fdf类型的struct数组:

struct t_fdf data[] = {
    {960, 540, 30, 20},
    {1280, 720, 20, 15},
    {1366, 786, 20, 10},
    {1600, 900, 10, 5},
    {1720, 900, 5, 4}
};

然后你可以将数组的单个成员赋给指针,就像GNU的getopt_long函数的工作原理一样。
您可能会从以下有关函数的更多信息中受益:https://linux.die.net/man/3/getopt_long

相关问题