[英]Function call with pointer to non-const and pointer to const arguments of same address
[英]Pointer to a function that accepts both const and non-const arguments
我想為讀取和寫入unix函數編寫包裝,但是read具有const void指針參數,並編寫一個簡單的void指針作為參數。
因此,像這樣的原型將無法使用以下功能之一:
typedef ssize_t (*genericStreamHandler)(int, const void*, size);
如果代碼需要允許不兼容的函數,請不要對函數簽名進行原型設計。
下面的編譯沒有警告/錯誤。
#include <stdio.h>
ssize_t file_read(int h, const void* b, int sz) {
if (b) return 0;
return h + sz;
}
ssize_t file_write(int h, void* b, int sz) {
if (b) return 0;
return h + sz;
}
//typedef ssize_t (*genericStreamHandler)(int, void*, int);
// v--- No function prototype
typedef ssize_t (*genericStreamHandler)();
int main(void) {
genericStreamHandler gFH1 = file_read;
genericStreamHandler gFH2 = file_write;
char buf[10];
return (*gFH1)(0, buf, 10) + (*gFH2)(0, buf, 10);
}
OTOH,更好的答案可能在於采用另一種方法,該方法不需要通用類型的變體功能簽名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.