筆者近日瞭解到,有parameter-type-lists可以在C空:如何在C代碼庫中查找使用參數類型列表?
int print();
int main() {
print("hallo"); // << valid but highly unintuitive
}
int print() {
}
在此代碼的人可能只是忘了寫print(void)
(可能是C++開發者)都是別人提供的參數。編譯不顯示任何警告或錯誤:
$ make test -Wstrict-prototypes -Wimplicit -Wimplicit-function-declaration -Wall
cc test.c -o test
我沒有找到,警告有關空參數類型列表中,只有大約隱函數聲明中的編譯器標誌。
有什麼我可以做的,這有助於我在給定的代碼庫中找到參數類型列表的所有用法?
E.g.
- letting a C++ compiler compile the C code as C++和解決型問題(C++不允許的參數,如果該聲明不一一列舉)
- 讓編譯器列表中的所有函數聲明(不知道如果可能的話)和手動搜索空括號
grep
荷蘭國際集團的參數類型列表中(對我來說太複雜了:))- 通過編譯器開關禁用參數類型列表(沒有發現任何)
您無法使用C++編譯器編譯C代碼! C++是一種不同的語言,相同的語法並不意味着相同的語義。 C++是**不是**「C與類」!而參數類型列表正是你**必須使用的正確的C語言。其他所有內容已經過時並且自17年以來已被棄用。不清楚你想完成什麼。 – Olaf
http://stackoverflow.com/a/861556/1668622 – frans
你是對的,但與有效的C++代碼的差異正是我試圖找到的 - 問題是我會發現比預期更多的問題: ) – frans