将特定结构传递给 C 中的函数
Pass specific structure to function in C
我一直在用 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] = {...};
};
理想情况下,在我的其余代码中,我想在显示函数的参数中传递对结构之一的引用,以便它知道要使用哪种字体。我无法理解如何执行此操作,我感到很困惑。
例如,如果我想使用 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);
}
我们将不胜感激任何对前进道路的帮助。我曾尝试搜索其他类似问题,但找不到我能够解决的问题。
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);
}
我一直在用 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] = {...};
};
理想情况下,在我的其余代码中,我想在显示函数的参数中传递对结构之一的引用,以便它知道要使用哪种字体。我无法理解如何执行此操作,我感到很困惑。
例如,如果我想使用 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);
}
我们将不胜感激任何对前进道路的帮助。我曾尝试搜索其他类似问题,但找不到我能够解决的问题。
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);
}