我目前正在ANSI C中编写一个小的GUI工具包前端,并定义颜色的默认结构。但由于颜色结构布局依赖于后端,我希望有可能覆盖布局并尝试使用预处理器来定义GUI头文件中的布局:
#ifndef GUI_OVERRIDE_COLOR_LAYOUT
struct gui_color {unsigned long rgb;};
#else
GUI_OVERRIDE_COLOR_LAYOUT
#endif
但是当我在源文件中包含标题之前尝试覆盖颜色结构布局时,我得到两个不同的版本。一个用于前端,一个用于后端,并从结构中获取完全错误的数据。
#define GUI_OVERRIDE_COLOR_LAYOUT\
struct gui_color {float r,g,b,a;};
#include "gui.h"
重要的是要注意前端不直接访问颜色结构,而是通过地址将颜色转发到后端。 那么甚至可以使用预处理器来覆盖结构的布局,还是我遗漏了某些东西或做错了什么?