4 ms·
If that's all, it's nothing that cannot be done in-language with smart pointer/iterator types in C++.
by cleeus 10y ago
If that's all, it's nothing that cannot be done in-language with smart pointer/iterator types in C++.
- Jtsummers 10y agobut I don't want to move my embedded C projects to C++. If I can use a language extension to get some extra confidence in my programs without changing the language im using then that's a compelling proposition.
- adxlarbi 10y agobut here in the case of Microsoft Checked C , you still need to modify your actual source code to get safer one.
- fao_ 10y agoBut you're moving to a safer subset, not a safer superset, so it still shouldn't require significant alterations.
- mixedCase 10y agoUhhh moving from set to subset is what requires alterations, set to superset does not, by definition. The problem here is compiler support and performance.
- fao_ 10y agoC++ is an altered and extended form of C, thus I would say it is more accurate to call it a superset, rather than a subset. I'm not using precise definitions here. And of course, but those will come in time. The point of it is that C++ isn't any safer (And actually, I would say is more risky in some aspects, because of the differences between (For example) the UB in C and C++), while Checked C is guaranteed to be safer, to a certain degree.
- cleeus 10y agoOK, I have to admit that Checked C is probably strictly safer while C++ is ... a mixed thing (both safer and more complicated).
- scott_s 10y agoThe difference between a language extension, and a new language, is one of degree, not kind. Personally, since the semantics of this "extension" go to the core of what one does in C, I consider Checked C a new language.
- Jtsummers 10y agoI agree, in principle. But reading over this document, the changes can be made in an incremental fashion. And with far less impact than switching to using C++ just for these (assuming equivalents exist) features.
- gpderetta 10y agoswitching to c++ can also be done in an incremental fashion.
- Jtsummers 10y agoYes, but not quite as trivially as: Enable extension Add `checked` to array declarations. (for the simplest case they've implemented). Converting to C++ also means making sure you have `extern "C"` in your function declarations to get around C++'s name mangling when calling C libraries. Among other, potential, source level changes. Or, similarly, making sure your C (now C++) library can be called correctly by C projects that depended on it. I'm not sold on this project as we haven't seen any results of course, but the approach is simpler than switching to C++.
- nitrogen 10y agoThere are also some nice C99 syntax features like compound literals that may not be supported by your C++ compiler.
- choosername 10y agosince many C programs will have simple array types like that, this addition is mostly syntactic.