Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I learned C and want to try to use C as my primary development language. However, most jobs I see are for C++.

So I want to know what I can do with C. What positions are usually open for a C programmer who doesn't also know C++?


migration rejected from stackoverflow.com Dec 2 '13 at 18:23

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by MichaelT, gnat, GlenH7, Kilian Foth, Robert Harvey Dec 2 '13 at 18:23

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, gnat, GlenH7, Kilian Foth, Robert Harvey
If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers 7

C suit for developing OSs, System level programming, Embedded Systems(including various types of micro-controllers PIC, ARM, and micro-processors), RTOS, Compilers, website programming using CGI (as a "gateway" for information between the Web application, the server, and the browser), libraries to other languages (such as GNU Multi-Precision Library, the GNU Scientific Library, Mathematica and MATLAB are completely or partially written in C) and most of the memory managed applications.

Target platforms for C programs range from 8-bit micro-controllers to supercomputers.

I think MATLAB is mainly written in Java, with only some optimized part in C. –  martjno Jan 18 '11 at 11:27
@martjno A lot of the core MATLAB routines rely on LAPACK, which is written in Fortran. –  chrisaycock Jan 18 '11 at 12:13
@martjno: Could you please provide the link? –  Abimaran Kugathasan Jan 24 '11 at 14:03
I don't have any, but two thing made me think about it: some runtime error that was coming out that was looking like a Java exception output and the issues that I had about 8 years ago installing Matlab when there was the issue between Miscrosoft and Sun Java versions. –  martjno Jan 30 '11 at 14:04
@martjno, I think it's only the Matlab GUI front end that uses Java. I regularly run matlab with -nojvm -nodisplay for command line and batch use. –  Charles E. Grant Dec 16 '11 at 6:04

Embedded systems low layers, Real time OS, device drivers are often written in C.

It is said that "C is the new assembly". Basically everywhere you'll be working very close to the hardware, there is good chance it will be in C.

They're often written in C-like C++ as well (limited use of virtual, etc.). The OP's in a good position to learn C++, I think he should just do it. –  Matthew Read Jan 18 '11 at 8:07
C-like C++, well, does games write in this way? –  guilin 桂林 Jan 18 '11 at 8:14
Most games are not developed from scratch but using framework or game engine. And most of them seems to written in Java/C++/C# rather than pure C. See here : en.wikipedia.org/wiki/List_of_game_engines –  Xavier T. Jan 18 '11 at 8:39
@XavierT. while c# and java game engines may be growing in use, this is traditionally a c++ stronghold, and most are still c++ –  jk. Dec 16 '11 at 9:23

C is frequently used for system software; software projects such as coreutils, for example, are written in C. But once you are familiar with C, it's a good idea to broaden your experience to include C++.


Your best bet is to find a company which already has a big project written in C, and do maintenance for it. Could be any domain. Besides that, it's mostly the low-level stuff Xavier mentioned.


Real-time tasks like audio processing are also usually done in C for performance reasons.


Besides the embedded and low-level jobs, where i find handy to write nice C code is when binding high-level languages (Python, Lua, JavaScript) to other code. Usually the extension API of those languages is defined in C and not C++.

So, when you have a system written in high level language and feel the need for speed, usually the best answer is to recode the hot parts in C.

Also, there might be some useful C library that you want to access from your choice language, then you have to write the binding in C.


Usually everything that is not run on a desktop/laptop computer as an user application is C: driver, kernel, telecom, system, phones...

If you intend to do games, those will run on big user machine/consoles, and since games are most of the time big applications, it will be done in C++.

I can understand you don't like C++, it's perfectly normal. Search for "dark side of C++", you'll find an interesting paper.

If you prefer C, you might want to take a lot at the STL and some design patterns. The C++ features that are important are :

  • Single inheritance
  • Constructors/Destructors
  • virtual functions

Those features are very important when building a large game, because it improves the whole code organization and execution (function and data are encapsulated in classes, it improves containment), where in C, it's rather chaotic.

Don't use too abstract features such as templates or multiple inheritance, it will mess your mind.

In fact, most of the time all C++ features are not used, and your code and data organization will still have a lot of C spirit in it. C++ is just more flexible than C in that way, but the abstract feature can be difficult to deal with since it's still a compiled language.


Not the answer you're looking for? Browse other questions tagged or ask your own question.