ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I never knew that before (.C is treated as .cpp not as .c) but I both tested it and looked it up and you are correct.
ssvirdi, if you have some reason to want to keep the name Hello.C instead of changing it to Hello.c you could compile it with gcc -xc Hello.C
The -xc option tells gcc the type of the input file is "c". If it knows the type already, it doesn't decide the type based on the extension (the .C).
The confusing error message you got is because the gcc command invokes the linker for a .c program regardless of the type of the input file. So your .C file is compiled as a C++ module but linked as a .c program, resulting in that link time error.
That behavior must seem silly when operating on just one input file. But gcc can compile and link multiple files in one command including mixed language programs. So this behavior that seems silly with one input file makes sense for more complicated commands.