爲什麼我們使用_PROTOTYPE例如_PROTOTYPE(無效* memset的(無效* _s,INT _c,爲size_t _n)我看到了它在MINIX3 source code爲什麼使用_PROTOTYPE頭文件
1
A
回答
5
因爲標題塊說,他們不知道是否要使用ANSI編譯器或K編譯器,並且這個marco允許它們將參數保留在ANSI版本中,並將它們丟棄在K & R build。
00033 /* Keep everything for ANSI prototypes. */
00034 #define _PROTOTYPE(function, params) function params
節
00045 /* Throw away the parameters for K&R prototypes. */
00046 #define _PROTOTYPE(function, params) function()
這意味着
00483 _PROTOTYPE(void _exit, (int _status) );
ANSI下變爲:
void _exit(int _status);
和下ķ& R:
void _exit();
1
爲了適應這兩種ķ& R和ANSI C函數聲明上的樣式。看看Wikipedia article about C evolution。
3
的您鏈接到源代碼解釋它:
00009 *如果_ANSI最終被定義,宏
00010 *
00011 * _PROTOTYPE(函數,則params)
00012 *
00013 *已定義。該宏以不同的方式擴展,根據需要生成
00014 * ANSI標準C原型或舊式K & R(Kernighan & Ritchie)
00015 *原型。最後,一些程序使用_CONST,_VOIDSTAR等
00016 *,以便它們可以通過ANSI和K & R編譯器進行移植。
00017 *在此定義適當的宏。
舊式ķ& [R原型有說法名第一,那麼類型:
int foobar (x, y)
int x;
float *y;
{
/* code */
}
ANSI標準的原型在開始結合他們兩個:
int foobar (int x, float *y) {
/* code */
}
的_PROTOTYPE
宏根據是否定義了_ANSI
來創建任一類型的適當簽名。在這種特定情況下,函數實現使用K & R簽名,但函數聲明或者包含或忽略它們的參數,具體取決於是否定義了_ANSI
。
值得注意的是,K & R風格的聲明可以追溯到1978年,現在大多數C代碼將使用現代ANSI風格的簽名。你很少需要支持這兩者。
相關問題
- 1. 爲什麼pywhois返回空頭文件?
- 2. 爲什麼Photoshop文件以8BPS開頭?
- 3. 爲什麼包含標準頭文件?
- 4. 爲什麼java中沒有頭文件?
- 5. 爲什麼關閉curl頭文件?
- 6. 爲什麼我不能使用外部頭文件?
- 7. 爲什麼c頭文件不是使用ANTLR生成的1.5?
- 8. 爲什麼你使用多個頭文件?
- 9. 爲什麼在WAV文件頭中使用小端和大端?
- 10. 爲什麼在C++頭文件中使用#ifndef和#define?
- 11. 什麼固件文件格式使用頭文件「Intel_FBF」
- 12. 什麼是BasicHttpRequest頭文件
- 13. C頭文件只在頭文件中使用,但不在.c文件中。爲什麼?
- 14. 爲什麼在使用C文件時創建新的頭文件?
- 15. 爲什麼在C語言頭文件中使用'#'符號?爲什麼不使用其他符號?
- 16. features.h頭文件的用途是什麼?
- 17. 使用HttpResponseCache.get時需要使用什麼頭文件
- 18. 爲什麼箭頭不能使用pdf?
- 19. 什麼是.htaccess文件。爲什麼我們使用這個文件。使用這個文件有什麼好處?
- 20. 爲什麼在方法定義文件中包含頭文件?
- 21. 爲什麼Qt默認項目爲manwindow.cpp使用單獨的頭文件?
- 22. C++:爲什麼使用「.hh」作爲C++頭文件的擴展名的原因
- 23. C++ #ifndef用於包含文件,爲什麼所有頭文件都用於頭文件?
- 24. 爲什麼蘋果使用.plist文件?
- 25. 爲什麼我們使用.htaccess文件?
- 26. C++什麼是頭文件包括使用CP_UTF8和調用WideCharToMultiByte
- 27. 爲什麼react-navigation動態頭文件不起作用?
- 28. 爲什麼不用curl在PHP中發送我的頭文件?
- 29. 爲什麼我的頭文件包含使構建失敗的文件?
- 30. 爲什麼要聲明您作爲頭文件包含的類?
雖然你顯示的是函數定義的參數,但宏是用於函數聲明的,在K&R中你根本沒有注意到參數的個數。 – 2010-04-09 13:48:36