我有一個C頭文件作爲我正在開發的API的一部分,它公開了許多函數。例如:如何使用宏或其他機制強制執行API定義?
api.h
void foo();
int bar(char * foobar);
現在,我最暴露的功能API中被實際的定義,但是,也有一些是我離開的使用,開發人員來實現自己。爲了使它更容易爲開發商和執行符合我的API添加以下宏:
api.h(修改)中使用
#define DEFINE_FOO() \
void foo()
void foo();
#define DEFINE_BAR() \
int bar(char * foobar)
int bar(char * foobar);
如下:
實施.C
#include "api.h"
DEFINE_FOO() {
// Codez
}
DEFINE_BAR() {
// More codez
}
一個困擾我關於這個程序的事roach是開發人員將使用DEFINE_ *宏,但不一定直觀,一個函數,即「酒吧」需要參數。有沒有一種方法可以改進這種方法,或者有更好的方法來在C中實施自定義API定義嗎?謝謝!
使用正確的原型。舊式宣言已棄用。堆棧溢出不是討論的地方。 (但我認爲你的方法使得調試更加困難並且不會增加任何好處)。 – Olaf
它現在不使用IDE,但我的經驗是使用宏來實現代碼使得很難跟蹤源代碼,例如行號不起作用。我建議使用一個代碼宏,顯然不會讓生活變得簡單,但是當沒有其他方法可以做到時。對於'qsort',用戶提供的函數'cmp'沒有任何問題。 –
我建議不要這樣做。如果用戶應該提供某些功能,請在文檔中解釋它,並在那裏顯示所需的簽名。這些宏根本不能幫助他,只是讓代碼看起來很不尋常。 – Barmar