Compiling errors and solutions

17 09 2007

Often I get unintelligible errors from compilers and trying to Google for an answer returns nothing of use, so I thought I would put up errors on this post as I run into them to help other people who have a similar problem.

Most of it will probably be C compiled under GCC but I play with C++, C#, Java, Python also and sometimes use other compilers such as Sun’s. If you have an alternative solution to an error post it to the comments and ill add it when I have time ☺

error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
Possible cause, forgetting to put () after function name in the function declaration

Example:

Universe* createUniverse {
	Universe universe = malloc(sizeof(Universe));
	bigBang(universe);
	return universe;
}

Should be:

Universe* createUniverse() {
	Universe universe = malloc(sizeof(Universe));
	bigBang(universe);
	return universe;
}

expected expression before '=' token
This was on the same line as a for loop for me me but was actually caused by accidentally having an = in the #define of a constant, this can be overlooked because the #defines are separate area and not thought about much once set:

#define NUM_STARS = 100000

Should be:

#define NUM_STARS 100000

error: invalid initializer
Can be cause by forgetting to declare variable as a pointer with *

Node newNode = appendNode(node);

Should be:

Node* newNode = appendNode(node);

error: expected `)' before ‘;’ token
Can be cause by putting a ; in place of ,

Example:
#include
using namespace std;
int main(int argc; char* argv[]) {
cout << "Hello World" <<; endl;
exit(EXIT_SUCCESS);
}

Should be:
#include
using namespace std;
int main(int argc, char* argv[]) {
cout << "Hello World" << endl;
exit(EXIT_SUCCESS);
}

warning: inline function 'virtual float Camera::getZ() const' used but never defined
When declaring a function inline, this can happen if the ‘inline’ keyword is in the header file, but the code in the main file. Put the inline where the actual function code is, not it’s prototype.