我有一些來自C++背景的頭文件,這些頭文件使用許多預先聲明的「默認值」來聲明類型。例如C - 如何爲C頭文件中的類型設置默認值
// Header.
typedef struct
{
float red;
float green;
float blue;
} RGBColor;
// Defaults.
const RGBColor kRGB_White = {1.0f, 1.0f, 1.0f};
const RGBColor kRGB_Black = {0.0f, 0.0f, 0.0f};
...
// Source file.
RGBColor aColor = kRGB_White;
問:我需要將這些報頭到C轉換爲兼容的原因。有沒有辦法爲C頭重新創建這些默認值,最好是不改變它們自己的數據結構?
謝謝。
我相信很多人都認爲'RGBColor aColor = kRGB_White;`是不是C合法的,因爲`INT FOO [ 4] = {1,2,3,4}; int bar [4] = foo`不合法,並且數組似乎比結構體具有更多的風險。 – SiegeX 2011-01-06 05:10:51
我傾向於推薦`static const`方法 - 它使得編譯器可以使用`const`對象的定義,而不需要鏈接時間跨模塊優化。你也不能用`const`對象初始化靜態存儲持續時間的對象 - 你也應該爲這種情況創建`#define KRGB_WHITE_STATIC {1.0f,1.0f,1.0f}`。 – caf 2011-01-06 05:19:25