error : storage class specified for parameter

CLinux

C Problem Overview


I have a C code written. When I compile it on Linux then in the header file it says the following error: storage class specified for parameter i32 , i8 and so on

typedef int	i32;

typedef char	i8;

C Solutions


Solution 1 - C

Chances are you've forgotten a semicolon in a header file someplace. Make sure each line ends in ;

Solution 2 - C

i had the same experience. The problem was at the function prototype declaration in the header file where a semi colon was missing at the end of function declaration.

The function was indicated in the compilation logs as "In function ... " just before the error snippet

Hope this helps!!

Solution 3 - C

You have some code somewhere, probably indicated in the full text of the error message, that does something like this:

void function(static int foo)

The static is not allowed there. It could also be another storage class, like register or extern.

Solution 4 - C

I incurred this same error once. The solution was to browse around files and look for pending statements (like a non-closed parenthesis, or a missing semicolon.) Usually it's really a trivial error, but the compiler complains.

The bad news is that it doesn't always complain at the right line (or even in the right file!) The good news is that in these cases it says something useful like:

WRONGFILE.h: In function ‘FUNCTION_OF_ANOTHER_FILE_WRT_WRONG_FILE’"
WRONGFILE:line:col: error: storage class specified for parameter ‘param’ before. 

Go and check in that other reported file.

Solution 5 - C

To add up on ;: another case can be a missing ) in a function pointer declaration:

extern void init_callbacks(void (*init)(), void (*end());

(missing closing parenthesis after *end).

Solution 6 - C

If you are using vim editor, you can easily find missing semicolon by typing:

/[^;]\s*$

...and then jump up/down (with N/n), until problematic line is found.

Solution 7 - C

I had similar issue, while error was missing the storage class name in static assignment. E.g.:

.h:
class MyClass {
   static const int something;
}

.cpp:
const int something = 1; // returns error
const int MyClass::something = 1; // OK

Solution 8 - C

As Mawg pointed out in a comment, declaring a class member function as extern can cause similar issues.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSPBView Question on Stackoverflow
Solution 1 - CFeatherlegsView Answer on Stackoverflow
Solution 2 - CAnurag DixitView Answer on Stackoverflow
Solution 3 - CnmichaelsView Answer on Stackoverflow
Solution 4 - CLDLView Answer on Stackoverflow
Solution 5 - CMatthieuView Answer on Stackoverflow
Solution 6 - Cahol967View Answer on Stackoverflow
Solution 7 - CigraczechView Answer on Stackoverflow
Solution 8 - CSzundiView Answer on Stackoverflow