01/10/2018, 01:00

Cảnh báo incompatible pointer type [-Wincompatible-pointer-types]

Mình đang tạo 1 chương trình để nhập dữ liệu đầu sách sử dụng typedef struct và hàm.

Đây là phần khai báo của mình sử dụng typedef struct:

typedef struct {
    char name[1000], author[1000], publisher[1000], description[1000], ISBN[15];
} book;

Đây là phần hàm dùng để thêm thông tin đầu sách:

void addBook(int* n, book list[1000]) {
    printf("Enter number of book you want to add: ");
    fpurge(stdin);
    scanf("%d", n);
    int i;
    for (i = 0; i < *n; i++) {
        printf("Book title: ");
        fpurge(stdin);
        gets(list[i].name);
        printf("Book author: ");
        fpurge(stdin);
        gets(list[i].author);
        printf("Publisher: ");
        fpurge(stdin);
        gets(list[i].publisher);
        printf("Description: ");
        fpurge(stdin);
        gets(list[i].description);
        printf("ISBN: ");
        fpurge(stdin);
        gets(list[i].ISBN);
    }
}

Và cuối cùng là phần main:

int main(int argc, char** argv) {
    int n, list[1000];
    addBook(&n, list);
    return (EXIT_SUCCESS);
}

Khi chạy, chương trình vẫn hoạt động bình thường cho phép mình nhập sách vào tuy nhiên, trình biên dịch lại có 2 cảnh báo:

  1. main.c:85:29: warning: passing argument 2 of ‘addBook’ from incompatible pointer type [-Wincompatible-pointer-types]
    addBook(&n, list);

  2. main.c:33:6: note: expected ‘book * {aka struct *}’ but argument is of type 'int
    void addBook(int
    n, book list[1000]) {

Mình thắc mắc tại sao trình biên dịch báo lại như trên nhưng chương trình vẫn hoạt động bình thường và cách khắc phục nào cho 2 cảnh báo trên.
Mình dùng Netbean IDE 8.2

*grab popcorn* viết 03:03 ngày 01/10/2018

1/ Dịch 2 lỗi đó ra, mọi thông tin bạn cần đều ghi rất rõ rồi. Dịch ra xong là sẽ biết sữa nhé
2/ Vẫn cho qua vì một số C compiler nới lỏng cái này. Bạn có thể chuyển qua C++ thì báo lỗi ngay và ko thể build chương trình.

Bài liên quan
0