c - Issue in passing a structure to a function accepting void * parameter -


i want call function of type foo(void * data) having input parameter struct variable.

i have heard when input format of type void, accepts every type of input variable type. nevertheless, error message.

struct info{     int element; };  struct info inserter_info; inserter_info.element = 0;  inserter(inserter_info); 

where inserter() prototyped void * inserter(void * data).

i tried casting got error messages.

i have heard when input format of type void, accepts every type of input variable type

absolutely wrong !!! void means nothing. accepts nothing.

however, void * considered generic pointer. quote c11 standard document, chapter 6.3.2.3, pointers, paragaraph 1,

a pointer void may converted or pointer object type. pointer object type may converted pointer void , again; result shall compare equal original pointer.

using attribute, many times, function parameter written void * that, function can accept different types of pointer , then, inside function body, based on other paramater, received pointer converted (casted) actual pointer type before using it.

if check properly, parameter function not void, it's void *.

you need call function like

inserter(&inserter_info); 

p.s - compiler should have warned regarding mismatch.


Comments

Popular posts from this blog

php - failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request -

java - How to filter a backspace keyboard input -

java - Show Soft Keyboard when EditText Appears -