Mình thắc mắc việc truyền con trỏ hàm callback đến hàm không có đối số có thể gây lỗi gì trên stack hay không?
Cụ thể ví dụ sau:
#include <stdio.h>
typedef void (*onCallback_f)(void* data);
struct callback_obj_t {
onCallback_f callback;
void *data;
};
struct callback_obj_t cbObj;
void printString()
{
printf("Hello\n");
}
void addCallback(onCallback_f cb, void* data)
{
cbObj.callback = cb;
cbObj.data = data;
}
int main()
{
addCallback(&printString, NULL);
printString();
cbObj.callback(cbObj.data);
printString();
return 0;
}
Ở đây hàm addCallback yêu input vào ở argument đầu tiên là một hàm theo dạng void foo(void*)
Tuy nhiên, lúc truyền vào thì mình truyền một hàm theo dạng void goo()
Mình không biết hành vi của chương trình sẽ làm gì với đối số NULL mình truyền vào?
Theo kết quả chạy chương trình tại đây: https://repl.it/repls/KnowingHeftyKeyboard thì chưa thấy vấn đề gì.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?