2 ms·
More "gotchas" actually, from the secure coding perspective. C is nicer in that its ABI is so simple that it's practically the lingua franca of inter-language
by mpyne 13y ago
More "gotchas" actually, from the secure coding perspective.
C is nicer in that its ABI is so simple that it's practically the lingua franca of inter-language linkage, but the fact that pointer types convert automatically to other pointer types is a huge source of errors, and so is the lack of language support for things like destructors.
Additionally there are many C++ concepts that cannot be implemented in C without the use of macros everywhere, such as using a sorting algorithm (which in C requires either a pointer indirection for a function call, or use of macros to generate a new sort function for each appropriate type).
Additionally in C++ you can use things like type expressions to select and compile the optimal version of a matrix-vector multiplication automatically, and I'm not even sure you could do that in C with macros as it involves programmatically generating types at compile-time.
C is certainly nice for some problems but your comment applies as much to going from C to asm as it does going from C++ to C.