Sal
Sal

Reputation: 1

When to use -std=c11 while compiling a C source code using ubunto

I am trying to compile a C source code to a machine code using an ubunto terminal My tutor instruction was to use the following command:

running clang myprogramm.c -std=c11

Why shall I use the keyword -std=c11 and what is the difference to using just

clang myprogramm.c 

Upvotes: 0

Views: 226

Answers (2)

Jens
Jens

Reputation: 72639

Using std= options is required by your tutor (I'm divinig her motives, I'm particularly good at this!) because she wants to make sure you stay away from all those nifty Clang features that turn the accepted language from C to A LANGUAGE SUPERFICIALLY LOOKING LIKE C BUT ACTUALLY A DIFFERENT LANGUAGE NOT SUPPORTED BY OTHER C COMPILERS.

That is more than just additional library functions. It include syntax changes that break the grammar of Standard C, as defined by ISO. A grasshopper should not use these while learning. Using -std=c11 makes sure Clang either warns about or even rejects, with an error, such constructs.

Upvotes: 2

Zan Lynx
Zan Lynx

Reputation: 54325

When to specify the standard? Whenever you use the compiler. It is never a good idea to let the compiler just use whatever it wants.

If someone tries to use a compiler that is too old, then they will get a warning or error, and they will understand why the compile fails.

If a code contributor (maybe even yourself!) tries to add code using features that are too new, their code will be rejected. That's very important if you intend to keep compatibility with an older standard.

By explicitly stating the standard, using new features or extensions are a choice and don't happen by accident.

Upvotes: 0

Related Questions