Рейтинг:
6
Stan Huang
Я подтвердил, что это от самого ВС-2012. Должно быть, в нем есть какой-то недостаток, хотя я не знаю, как его исправить. Наконец, я установил VS-2015, и ошибки исчезли. Таким образом, проблема заключается не в исходных кодах, а в самом VS.
Считается, что отсутствие Windows SDK вызывает эту ошибку на форуме MSDN. Я установил Windows 7.0 SDK, как и предлагалось, но это не помогает.
Рейтинг:
0
Jochen Arndt
Это, вероятно, вызвано некоторыми проблемами с порядком включения заголовочных файлов.
Проверьте строку(ы) над сообщением об ошибке, чтобы увидеть, какой из ваших исходных файлов на самом деле скомпилирован. Затем проверьте включение этого файла и / или отредактируйте свой вопрос, используя зеленую ссылку "улучшить вопрос", чтобы мы тоже могли его увидеть. Обратите внимание, что реальная проблема может быть также похоронена в одном из ваших заголовочных файлов, который включен в вышеупомянутый исходный файл.
Распространенным источником таких ошибок является забывание включить файл stdafx.ч поверх исходного файла C++ при использовании предварительно скомпилированных заголовков.
Stan Huang
Вот сообщение компиляции:
1> stdafx.cpp
1 & gt; Примечание: включая файл: d:\programs\tcl\dbu-collector\dview\dview\stdafx.h
1 & gt; Примечание: включая файл: d:\programs\tcl\dbu-collector\dview\dview\targetver.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Windows Kits\8.0\Include\shared\SDKDDKVer.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\sal. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\ConcurrencySal.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\vadefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\swprintf.inl
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\tchar. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\wchar. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wchar. h(525): ошибка C2146: синтаксическая ошибка: отсутствует'; 'перед идентификатором 'st_atime'
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wchar. h(525): ошибка C4430: отсутствует спецификатор типа-предполагается int. Примечание: C++ не поддерживает default-int
1&ГТ;файлы c:\program (х86)\Майкрософт Visual студии\11.0 ВК\включить\тип данных wchar.ч(526): ошибка C2146: синтаксическая ошибка : отсутствует ';' перед идентификатором тип доступа''
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wchar. h(526): ошибка C4430: отсутствует спецификатор типа-предполагается int. Примечание: C++ не поддерживает default-int
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wchar. h(527): ошибка C2146: синтаксическая ошибка: отсутствует'; 'перед идентификатором 'st_ctime'
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wchar. h(527): ошибка C4430: отсутствует спецификатор типа-предполагается int. Примечание: C++ не поддерживает default-int
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\wtime.inl
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wtime.inl(44): ошибка C4430: отсутствует спецификатор типа - предполагается int. Примечание: C++ не поддерживает default-int
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wtime.inl(44): ошибка C2143: синтаксическая ошибка: отсутствует ', ' перед '*'
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wtime.inl(48): ошибка C2065: '_Time': необъявленный идентификатор
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wtime.inl(52): ошибка C4430: отсутствует спецификатор типа - предполагается int. Примечание: C++ не поддерживает default-int
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wtime.inl(52): ошибка C2143: синтаксическая ошибка: отсутствует ', ' перед '*'
1>c:\program файлы (x86)\microsoft visual studio 11.0\vc\include\wtime.inl(54): ошибка C2065: '_Time': необъявленный идентификатор
========== Сборка: 0 успешно, 1 неудачно, 0 обновлено, 0 пропущено ==========
Jochen Arndt
Выглядит подозрительно, потому что нет никакого включения afxwin.h или windows.сек на файл stdafx.сек.
Что такое targetver. h? Включает ли он SDKDDKVer. h?
Переместите включение SDKDDKVer.h в конец stdafx.h.
Сгенерированные VS включения в stdafx.h должны быть оставлены сверху. После этого включите свои файлы.
Stan Huang
Я добавил либо один из нижеприведенных вариантов в верхнюю часть stdafx.h, все еще получая ошибки компиляции в самих файлах VS.
#включить & lt;afxwin.h>
#включить & lt;windows. h>
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
Stan Huang
stdafx. c содержит только один оператор, inclusion:
код #include "файл stdafx.ч"
stdafx. h содержит ниже:
#ПРАГМА один раз
код #include "targetver.ч"
#include < stdio.h>
#include <tchar. h>
И targetver. h содержит только один оператор:
#include & lt;sdkddkver.h>
Jochen Arndt
Для получения моего вышеприведенного комментария.
targetver.H включает SDKDDKVer.H, чтобы установить конкретных макросов.
Но после того, что там должно быть включение Windows заголовочные файлы, но вы не в том числе и с stdio.сек.
При создании нового проекта будет сгенерирован файл stdafx.h, который должен содержать включение afxwin.h (для приложений MFC) или windows.h. Если вы хотите добавить заголовочные файлы, сделайте это внизу после всех других операторов include.
Первое сообщение об ошибке касается st_atime. Это относится к типу time_t. Итак, у вас есть проблема с определением time_t. Но файл wchar.h должен определить его, если он еще не определен другим заголовочным файлом (time.h).
Но при включении windows. h или других системных заголовочных файлов Windows эти файлы будут включены туда.
Я предлагаю отменить все изменения в stdafx.h и добавить дополнительные заголовочные файлы по мере необходимости в конце файла.
Stan Huang
Я сильно подозреваю, что проблема исходит от самого VS 2012. Я даже создал фиктивную консольную программу только с одной печатающей "привет", одной читающей консолью. Компиляция его вызывает почти такие же сообщения об ошибках. Я удалил VS 2012 и переустановил его, создал фиктивную консольную программу, и результат тот же. Это бьет меня, потому что я делал одно и то же слишком много раз за одним и тем же компьютером в течение длительного времени и всегда преуспевал. Я не знаю, почему это неправильно, теперь я даже не могу создать простейшую консольную программу, используя мой VS-2012 под рукой.
Ниже приведено сообщение об ошибке при компиляции моей фиктивной консольной программы.
1> - - - - - - начата сборка: проект: dview, конфигурация: Debug Win32 ------
1> dview.cpp
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\iostream
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\istream
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\ostream
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\ios
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\xlocnum
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\climits
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\yvals. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\xkeycheck.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\sal. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\ConcurrencySal.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\vadefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\use_ansi. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\limits. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\cmath
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\math. h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\xtgmath.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\xtr1common
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\cstdio
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\swprintf.inl
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\cstdlib
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\stdlib.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\streambuf
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\xiosbase
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\xlocale
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\include\cstring
1 & gt; Примечание: включая файл: C:\Program файлы (x86)\Microsoft Visual Studio 11
Jochen Arndt
Как уже было сказано:
Вероятно, это отсутствующее определение time_t.
Позже у вас есть "_Time": необъявленный идентификатор " в wtime. inl.
Откройте wchar. h и проверьте строку с ошибкой, чтобы убедиться в этом.
В верхней части файла должен быть typedef для time_t, если он еще не определен.
Вы можете попытаться включить время.h сначала и посмотрим, что получится.
Включив файлов использование функции printf() и включать только с stdio.сек. Затем включают тип данных wchar.сек.
Я не могу сделать все это, потому что у меня нет VS 2012.