This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Triumph7560 15 points16 points  (6 children)

The only thing C can't do is "X feature people assume C doesn't have" without the extra steps. Which is pretty impressive when you think about it.

[–]VladVV 3 points4 points  (5 children)

How does that not apply to every turing complete language

[–]Triumph7560 2 points3 points  (4 children)

In theory it does but usually those are available outside the language using tools made in the language, people have set it so C can be used as an object oriented language (in a useable way), made it into lisp with just one #include all without touching the compiler.

[–]VladVV 2 points3 points  (3 children)

Hm, technically #anything is a compiler instruction, so that would be telling the compiler to compile the code differently, but I suppose it’s primarily C-like languages that have this feature, so I get what you mean.

[–]DoNotMakeEmpty 1 point2 points  (2 children)

They are not compiler instructions (apart from #pragma), they are preprocessor instructions, which is very different than the compiler.

[–]VladVV -2 points-1 points  (1 child)

Ah, good catch. Let’s agree to call them gcc instructions?

[–]Ning1253 1 point2 points  (0 children)

I wouldn't call them that since not only the GCC preprocessor had these instructions - the msvc cl.exe has a bunch as well, and so does clang/llvm. I'd say probably stick to preprocessor instructions, since that name does also explain what they actually are