But in another hand as in every software, there is still some bug. I only worked 2 or 3 days with VS’13 but I found 2 bug I reported through the MS Connect portal.
1) The C compiler has a terrible bug and I think that bug is a major issue, because it prevent the build of a tons of good C99 open source code.
for the VS’13 C compiler the following code is wrong and it report the following error:
typedef struct { int j; } test_t; int f(test_t **p_pool, int i) { if (i <= 0) return -1; test_t *pool; *p_pool = pool; return i; }
and the error is : 'test_t' : illegal use of this type as an expression
in fact, it looks like the compiler fails to interpret test_t as a type if the if-then statement body before isn’t surrounded by a some {}, for any other basic type, I mean int, char etc…. there is no problem but with all defined type containing “_t” (size_t, prtrdiff_t, uint8_t, etc….) it fails !
A workaround if to rewrite the code as:
typedef struct { int j; } test_t; int f(test_t **p_pool, int i) { if (i <= 0) { return -1; } test_t *pool; *p_pool = pool; return i; }
But it’s a pain to do that on a huge C/C99 code base.
Updated 2014 April 29th: An answer from MS dev team say that a fix will be available with the next update ... Good to hear!
2) the project property page has been improved with several new option, but switching from Debug to Release configuration directly from the property page may be disappointing, see below what’s may happen when you are doing a that.
Step to reproduce:
- open a C/C++ project configuration property pages
- switch the Configuration (Debug to Release or vice-versa)
- now select another entry in the property tree and look. Below for example I was initially in Release / on C/C++->Preprocessor, I first switched to Debug and clicked on Language.
Hopefully if you switch-back or if you close the pages and re-open then directly with “Debug” Configuration, the option will be back !