将特定结构传递给C中的功能

Tay*_*pac 2 c pointers structure

我一直用C编写程序,用PIC在显示器上绘制字符.

我有许多结构包含不同字体的符号和元数据,我正在努力研究如何将它们传递给在显示缓冲区中绘制符号的函数.我目前的代码将无法编译.

到目前为止,我在头文件中有遵循此格式的结构:

struct Arial
{
    char symbol[1000] = {...};
    int info[32][3] = {...};
};

struct Courier
{
    char symbol[1000] = {...};
    int info[32][3] = {...};
};

struct Calibri
{
    char symbol[1000] = {...};
    int info[32][3] = {...};
};
Run Code Online (Sandbox Code Playgroud)

理想情况下,在我的其余代码中,我想传递对显示函数参数中的一个结构的引用,以便它知道要使用哪种字体.我无法理解如何做到这一点,我感到困惑.

例如,如果我想使用字体Arial打印Arial结构中的第10个字符:

void display_function(struct *font_name, int letter)
{
    int letter_start = font_name->info[letter][0];
    char letter_data = font_name->symbol[letter_start];

    // Draws to buffer here
}

void main()
{
    display_function(&Arial, 10);
}
Run Code Online (Sandbox Code Playgroud)

任何有关前进道路的帮助都将非常感激.我试过寻找其他类似的问题,但找不到我能够解决的问题.

dbu*_*ush 5

一个struct定义本身并不创建一个变量.它只定义一个类型及其成员.因此,您无法在结构定义中指定初始值设定项.

您需要创建该类型的变量.然后你可以初始化它们.在这种情况下,您只需要一种类型和三种该类型的变量.

struct font
{
    char symbol[1000];
    int info[32][3];
};

struct font Arial = { 
    "abcdefg...",
    {
        { 1, 2, 3 },
        { 4, 5, 6 },
        ...
    }
};

struct font Courier = { 
    "qwerty...",
    {
        { 9, 8, 7 },
        { 2, 3, 4 },
        ...
    }
};


void display_function(struct font *font_name, int letter)
{
    int letter_start = font_name->info[letter][0];
    char letter_data = font_name->symbol[letter_start];

    // Draws to buffer here
}

void main()
{
    display_function(&Arial, 10);
}
Run Code Online (Sandbox Code Playgroud)