Hacker News new | past | comments | ask | show | jobs | submit login

I was under the impression the C++ standard moves in lockstep with C so that all valid C programs should also be valid C++ programs.



I believe that has not been true for a long time, at the very least because some things are keywords in C++ that would be valid identifiers in C.


Yea, after looking into it they don't seem to be completely compatible anymore. I have known many people to use a C++ compiler when writing C code, but it looks like that restricts you to a subset of C.

They do try and stay reasonably consistent so for example Long Long moved from C to C++. And C99 has reduced some other incompatibilities by incorporating C++ features such as // comments and mixed declarations and code.

http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B


"I have known many people to use a C++ compiler when writing C code, but it looks like that restricts you to a subset of C."

Many C++ compilers actually are C/C++ compilers that decide what language to compile depending on command line flags and/or file name extension.


Ahh, ok now that explains a lot, thanks.


That's Objective-C.

    int* foo = malloc(sizeof(int));
Is invalid C++.


I don't really know C++ as well as I know C - could you explain? I always thought that the only real reason C++ wasn't a superset is because of the additional keywords.


C++ doesn't coerce the void* malloc returns into an int* , C does. You have to write

    int* foo = (int*)malloc(sizeof(int));
in C++ or the compiler gives a type error.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: