sau đây test.c
chương trìnhTại sao GCC không nhất quán về việc phát ra cảnh báo cho các chức năng không khai báo?
int main() {
dummySum(1, 2);
return 0;
}
int dummySum(int a, int b) {
return a + b;
}
... không tạo ra bất kỳ cảnh báo khi biên soạn với gcc -o test test.c
, trong khi những sản phẩm sau một trong những hiện:
int main() {
dummySum(1, 2);
return 0;
}
void dummySum(int a, int b) {
a + b;
}
Tại sao?
Không. Tôi cũng nghĩ vậy. 'int' vs' void' kiểu trả về 'dummySum'. – mattjgalloway
Kiểu trả về mặc định của hàm undeclared là int. Khi bạn khai báo nó là void, nó không tìm thấy bất kỳ hàm nào phù hợp. Tôi tin rằng nếu bạn sử dụng kiểm tra cảnh báo mạnh hơn (ví dụ: -Wall), bạn sẽ nhận được cảnh báo trong cả hai trường hợp. – Joe
trong bài đăng đầu tiên nó giống nhau, bạn nói đúng. tôi đã chỉnh sửa bài đăng. Xin lỗi –