I have code in my header file that looks like:
typedef struct _bn bnode;
I can do
bnode b;
just fine, but
b[i], where i is an int gives me the following error:
invalid use of undefined type ‘struct _bn’
Any ideas?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
As far as an API/library goes, normally if you’re going to need an opaque structure, you don’t allow the user of the API to declare things like arrays or static instances because of this. Not knowing anything about the structure is the name of the game so you’re probably going to have to define some functions to manipulate them. Most C libraries that declare opaque structures often has accessor and modification functions.
One example is from Lua (obviously a Lua state is an single use structure but it’s the idea):
In this case, if you decided you needed multiple Lua states, you would do something like the following:
I think the general rule-of-thumb is that if you’re working with opaque structures, you’re going to be working through pointers only, which is pretty much the only way to go about it anyway.