Hi guys,
I have a piece of code that I copied from another source but I don't understand what it means and the Keil compiler doesn't either.
The code looks like that:
#if _MSC_VER >= 1000 #define __CIFx_PACKED_PRE #endif typedef __CIFx_PACKED_PRE struct DRIVER_INFORMATIONtag { char abDriverVersion[32]; uint32_t ulBoardCnt; } __CIFx_PACKED_POST DRIVER_INFORMATION;
I get this error message for this typedef statement:
cifXUser.h(236): warning: #260-D: explicit type is missing ("int" assumed) cifXUser.h(236): error: #65: expected a ";"
And acutally I haven't seen a typedef like this before... in my opinion a typedef should look like something without the "__CIFx_PACKED_PER" part.
Can you help me in configuring the compiler right (so that it compiles that) and could you tell me, what it is about here?
Thanks a lot!!!
Strip the #__CIFx_PACKED_PRE word.
Or add a
#define __CIFx_PACKED_PRE
making the preprocessor strip that word on-the-fly.
You need to check Microsoft Visual C++ documentation to figure out what they intended to do with the additional __CIFx_PACKED_PRE attribute.
Just that the full source code must have had another #define line somewhere or some versions of Visual C++ must have had that symbol pre-defined. I would have expected the CIFx_PACKED_PRE symbol to be expanded to __packed or similar when building for some versions of VC++.
what does strip mean in this case? The adding of
somewhere before in the code, hasn't solved the problem..
sorry, that did help indeed. Thank you! I was wrong.
But what does it do: just doing a #define blabalba I always thought that defines have to be followed by a number or something...like that:
#define xyz 16
"I always thought that defines have to be followed by a number or something"
You need to go back to your 'C' textbook and review the chapter on #defines!
Some suggested resources here: blog.antronics.co.uk/.../12
It is perfectly valid (and, as seen here, quite common) to have a #define symbol that expands to nothing at all!
View all questions in Keil forum