One of the changes in the C99 standard is the removal of implicit function declarations. Previously, if a function was called without being previously defined, it was assumed to be "int _NAME_()". I'm requesting some way to enforce the C99 standard during error detection so it no longer accepts these implicit function declarations as valid.
Having the option to enforce this C99 change would be super handy. For example, if I make a typo in a function name, I currently don't find out until compile time. However, if I could declare somehow (perhaps in one of the json files?) that the file is C99 (or later), then implicit declarations could result as an error squiggle in the editor. This would also be great during refactoring.
A global setting might work too, but I wasn't sure whether I'd run into nuisance errors with external libraries. Maybe not?
cl/clang/gcc all allow implicit function declarations in C99+ and just emit a warning (even though the spec says otherwise), and warnings are not something we display because our parser doesn't work with #pragma warning disabling, so getting warnings to be showable is not something that will be implemented any time soon (VS 2017 doesn't support it).
If warnings aren't showable, can I set VS Code to treat the warnings as errors which would then be shown?
You can remove the line containing "--no_warnings", from the bin/msvc.json file (in the directory containing the Microsoft.VSCode.CPP.Extension binary) to enable warnings...not sure yet if we want to expose that in a setting (otherwise, it's overwritten on updates). The warning is classified as an error instead of warning in our UI though.
UPDATE -- oh, but there's a bug that will always cause the "last line of file ends without a newline", so enabling warnings might not be desirable until that issue is fixed.

Was just logging in to mention that :) It's also upset that "/usr/include" was specified as both a system and non-system include directory -- the non-system entry will be ignored. But, I did ask for warnings so who am I to complain? I can ignore these easily enough.
Thanks for the workaround, I like it!
Yeah, I also see that "/usr/include" warning/error on Linux -- I think this is caused by a known bug in which we're hardcoding "/usr/include" to the IntelliSense paths (should be easy to fix).
UPDATE: The next update should have a fix for both of those bogus warnings. I'm dogfooding the warnings more to see if there are any other issues.
The 0.17.0-insiders release should fix the issues with the bogus warnings: https://github.com/Microsoft/vscode-cpptools/releases/tag/v0.17.0-insiders .
Although this request is not strictly solved, I'm quite happy with the workarounds at this point. Thank you very much! Closing, if that's okay.
Most helpful comment
You can remove the line containing
"--no_warnings",from thebin/msvc.jsonfile (in the directory containing the Microsoft.VSCode.CPP.Extension binary) to enable warnings...not sure yet if we want to expose that in a setting (otherwise, it's overwritten on updates). The warning is classified as an error instead of warning in our UI though.UPDATE -- oh, but there's a bug that will always cause the "last line of file ends without a newline", so enabling warnings might not be desirable until that issue is fixed.
