c - How can this be dereferencing ‘void *’ when the pointer was declared with a type? -


i'm trying make array file-level or global scope size determined @ runtime. various articles this one suggest pattern such dynamic array:

static misctype *handles; static int nthreads;  int main(int argc, char **argv) {     // nthreads set from argv     handles = malloc(nthreads * sizeof(misctype));     for(i = 0; < nthreads; i++) {         handles[i] = miscfunction();     ...     free(handles);     return 0; }  int otherfunction(...) {     for(i = 0; < nthreads; i++) {         handles[i] = miscfunction();     ... } 

however, everywhere use pointer array (i.e. handles[i]) compiler says warning: dereferencing ‘void *’ pointer , error: invalid use of void expression.

but it's not void pointer! has type (misctype in pseudocode), , re-casting same type doesn't stop errors. pass void * or that.

what's going on here? more importantly, can it?

okay, start with, if compiler tells handles void *, should believe it. now, turns out malloc returns void *, deduce handles still void * after assignment.

from may deduce assignment isn't doing think is. @ point have ask "so misctype", , we, using code you've posted, can't deduce that. if grok misctype is, bet you'll find answer.


Comments

Popular posts from this blog

OpenCV OpenCL: Convert Mat to Bitmap in JNI Layer for Android -

android - org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope -

python - How to remove the Xframe Options header in django? -