2011-07-24 48 views
1

假設我想在C中聲明一組常量(表示應用程序的錯誤代碼)。你如何將它們分成文件?你會在外部文件中使用枚舉幷包含它?最佳常量c約定

謝謝, 詹姆斯

回答

2

是,在.h文件中的#define或枚舉是要走的路。如果您使用像gdb這樣的調試器進行調試,那麼枚舉是很有用的,因爲您會看到比數字更具描述性的值。

1

如果它是一組值,在頭文件中聲明的枚舉就足夠了(有些人使用#define,但由於值無關緊要,枚舉在這種情況下工作得很好)。如果你只是想比較錯誤代碼,這是一個好方法。

2

如果它是一組相關的數值,那麼enum是正確的方法。如果這些值是C字符串或者不能由enum表示(或者如果它們不明顯形成一組相關值),則可以使用以下兩種方法之一。

使用預處理器#define語句或使用extern const標記的變量。前者在編譯時被解析,所以你可以使用它來指定數組長度或在使用時主動調用代碼。但是,後者允許您更改常量的值(通過在.c文件中指定而不是在.h文件中)而無需重新編譯每個使用該文件的文件。

因爲extern const - 標記變量可以按照這種方式進行更改,它們在許多項目中重複使用的代碼或作爲庫分發的代碼中更可取。然後可以在不強迫程序重新編譯的情況下對庫進行更改。