有人可以向我解釋爲什麼下面的代碼沒有警告或錯誤編譯?C函數沒有參數行爲
我希望編譯器警告我,函數測試不期望任何參數。 但代碼編譯並遞歸運行功能測試。
#include <stdio.h>
#include <stdlib.h>
static void test1(int a, int b, int c) {}
static void test() {
printf("HERE\n");
test(1,2,3);
}
void main() {
test();
}
@Chris是的。爲什麼哦,爲什麼當人們在這裏發帖時,他們的示例代碼如此血腥難以閱讀。使用完全不同的名稱而非幾乎相同的名稱有什麼不妥?請別人使用「test」和「test1」等名稱,使用「A」,「B」和「C」等名稱。 – 2011-05-08 19:29:27
除了正確的答案表明一組空參數不是C中的原型,您可以使用'-Wstrict-prototypes'在GCC中啓用缺少原型的警告,在MSVC中使用'/ Wall/W4' 。請注意'-Wall'不能在GCC中啓用這個警告(我不知道爲什麼)。 – 2011-05-08 20:21:21
糟糕,當我打算拒絕這個問題時,我批准了這個問題的編輯。 – 2011-05-09 13:31:53