Есть ли причина, по которой код ниже не должен работать? (Обобщение, как C Кодекса)Ошибка C99 stdint.h в VS2013
код
#include <stdint.h>
int main()
{
int var = 10;
if (var == 0) return 1;
uint8_t data;
return 0;
}
Сообщения об ошибках
Ошибка 3 Ошибка C2065: 'данных': необъявленный идентификатор Ошибка 2 Ошибка C2146: ошибка синтаксиса: отсутствует ';' Перед Ошибкой 1 ошибка «данных» идентификатора C2275: «uint8_t»: незаконное использование данного типа, как выражение
Может быть, это ошибка в vs2013?
Чтобы исправить выше, все это может быть сделано:
- Вернуться заявление в bracets будет это исправить, т.е. если (вар == 0) {возвращение; }
- Delcare uint8_t данные перед если заявления
- Используйте неподписанные символ вместо uint8_t
- компилировать с C++ "Compile как код C++" (проект свойства-> C/C++ -> Advanced -> Compile As)
Update: vs2015 (vs140), кажется, не имеют эту «ошибку»
fyi - код скомпилирован с gcc. В большинстве случаев я получаю от pedantic предупреждение: 'ISO C90 запрещает смешанные декларации и код'. это только появляется, если я указываю pedantic в дополнение к std = c89 .. – amdixon
VC не является C99-компилятором. – Olaf
У моего VS2013 нет никаких проблем с этим кодом, но VS2010 ему не нравится. – molbdnilo