来自未命名命名空间的取消引用指针不起作用
Dereference pointer from unnamed namespace not working
对于我正在开发的 Wii 自制游戏引擎,我有这个(缩短的)脚本来处理打印文本:
#include <grrlib.h>
#include "graphics.hpp"
#include "Vera_ttf.h"
namespace {
GRRLIB_ttfFont *font = GRRLIB_LoadTTF(Vera_ttf, Vera_ttf_size);
}
namespace graphics {
namespace module {
void print(const char *str, int x, int y) {
GRRLIB_PrintfTTF(x, y, font, str, 12, 0xFFFFFFFF);
}
} // module
} // graphics
此代码可以编译,但是,当尝试调用上面的 print
函数时,没有呈现任何内容。奇怪的是,删除未命名的命名空间并将 print
函数更改为:
void print(const char *str, int x, int y) {
static GRRLIB_ttfFont *font = GRRLIB_LoadTTF(Vera_ttf, Vera_ttf_size);
GRRLIB_PrintfTTF(x, y, font, str, 12, 0xFFFFFFFF);
}
工作正常。但是,我希望字体变量可以通过另一个 setFont
函数进行更改。我怎样才能做到这一点?
这里是GRRLIB_PrintfTTF
函数代码,如果有人需要的话:https://github.com/GRRLIB/GRRLIB/blob/master/GRRLIB/GRRLIB/GRRLIB_ttf.c
由于你必须用GRRLIB_Init()初始化库,你可以提供一个类似的init函数来确保你的变量在库之后被初始化。
#include <grrlib.h>
#include "graphics.hpp"
#include "Vera_ttf.h"
namespace {
GRRLIB_ttfFont *font = NULL;
}
namespace graphics {
void InitGraphics() {
font = GRRLIB_LoadTTF(Vera_ttf, Vera_ttf_size);
}
namespace module {
void print(const char *str, int x, int y) {
GRRLIB_PrintfTTF(x, y, font, str, 12, 0xFFFFFFFF);
}
} // module
} // graphics
在调用 GRRLIB_Init()
之后调用 graphics::InitGraphics()
对于我正在开发的 Wii 自制游戏引擎,我有这个(缩短的)脚本来处理打印文本:
#include <grrlib.h>
#include "graphics.hpp"
#include "Vera_ttf.h"
namespace {
GRRLIB_ttfFont *font = GRRLIB_LoadTTF(Vera_ttf, Vera_ttf_size);
}
namespace graphics {
namespace module {
void print(const char *str, int x, int y) {
GRRLIB_PrintfTTF(x, y, font, str, 12, 0xFFFFFFFF);
}
} // module
} // graphics
此代码可以编译,但是,当尝试调用上面的 print
函数时,没有呈现任何内容。奇怪的是,删除未命名的命名空间并将 print
函数更改为:
void print(const char *str, int x, int y) {
static GRRLIB_ttfFont *font = GRRLIB_LoadTTF(Vera_ttf, Vera_ttf_size);
GRRLIB_PrintfTTF(x, y, font, str, 12, 0xFFFFFFFF);
}
工作正常。但是,我希望字体变量可以通过另一个 setFont
函数进行更改。我怎样才能做到这一点?
这里是GRRLIB_PrintfTTF
函数代码,如果有人需要的话:https://github.com/GRRLIB/GRRLIB/blob/master/GRRLIB/GRRLIB/GRRLIB_ttf.c
由于你必须用GRRLIB_Init()初始化库,你可以提供一个类似的init函数来确保你的变量在库之后被初始化。
#include <grrlib.h>
#include "graphics.hpp"
#include "Vera_ttf.h"
namespace {
GRRLIB_ttfFont *font = NULL;
}
namespace graphics {
void InitGraphics() {
font = GRRLIB_LoadTTF(Vera_ttf, Vera_ttf_size);
}
namespace module {
void print(const char *str, int x, int y) {
GRRLIB_PrintfTTF(x, y, font, str, 12, 0xFFFFFFFF);
}
} // module
} // graphics
在调用 GRRLIB_Init()
之后调用 graphics::InitGraphics()