gpt4 book ai didi

c - 如何在 C 中定义指向结构的全局指针?

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:01 25 4
gpt4 key购买 nike

我正在尝试定义一个指向结构的全局指针 - 字体 - 这样我就可以在我的项目中需要它时使用它。

当我编译时,在 Font.c 的 Font_t* font = load_font("ubuntu"); 行出现此错误 initializer element is not constant

字体.h:

#ifndef __FONT_H
#define __FONT_H

#include "Bitmap.h"
#include "Utilities.h"

/// Represents a Font
typedef struct {
int letterSpacing;

// symbols
Bitmap_t* space;
(...)
Bitmap_t* y;
Bitmap_t* z;
} Font_t;
extern Font_t* font;

/**
* @brief Loads a font from disk
*
* @param filename name of the font to load
*/
Font_t* load_font(char const* fontName);

字体.c:

#include "Font.h"

#include "stdio.h"
#include "Utilities.h"
#include "video_gr.h"

Font_t* font = load_font("ubuntu");

Font_t* load_font(char const* fontName) {
Font_t* font = (Font_t*) malloc(sizeof(Font_t));

font->letterSpacing = 1;

char path[200];
strcpy(path, fontsPath);
strcat(path, fontName);

char tempPath[200];

strcpy(tempPath, path); strcat(tempPath, "/space.bmp"); font->space = load_bitmap(tempPath);
(...)
strcpy(tempPath, path); strcat(tempPath, "/y.bmp"); font->y = load_bitmap(tempPath);
strcpy(tempPath, path); strcat(tempPath, "/z.bmp"); font->z = load_bitmap(tempPath);

return font;
}

最佳答案

Font_t* font = load_font("ubuntu");

你不能那样做。不允许在全局范围内以这种方式调用函数。您将需要拆分声明和初始化。

在全局范围内:

Font_t* font;

首次使用时,在 main 中:

font = load_font("ubuntu");

关于c - 如何在 C 中定义指向结构的全局指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827362/

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