Ошибка активно e0070 недопустимый неполный тип

Цитата
Сообщение от PeterVl
Посмотреть сообщение

Просто я думал, что разница во времени компиляции не настолько ощутима.

когда ты пишешь в своём хедере:

этот заголовок в свою очередь подтягивает другие заголовки.
а те — ещё какие то.

в результате, там сверху прицепляются тонны библиотечного и не очень кода.
и все эти тонны компилятору приходится парсить каждый раз заново для каждой очередной cpp

если проект маленький, всего из нескольких файликов,
то на скорость компиляции действительно можно забить.

однако, на практике, проекты имеют свойство разрастаться.
и по мере их роста, скорость компиляции все ощутимее и ощутимее даёт о себе знать.

просто представь себе, сколько всякого хлама тянет за собой
единственное включение: #include <conditional_variable>

распечатка заголовков

Код

1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecondition_variable 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xthread 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xthrcommon.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeyvals.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexkeycheck.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecrtdefs.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesal.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeConcurrencySal.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevadefs.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeuse_ansi.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xtime 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xtimec.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrttime.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wtime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xthreads.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludelimits.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetuple 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludenew 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeexception 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetype_traits 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexstddef 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstddef 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstddef.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstdlib 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstdlib.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_malloc.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_search.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wstdlib.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeinitializer_list 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludextr1common 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtmalloc.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_exception.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeeh.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_terminate.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_new.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexutility 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeclimits 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeutility 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeiosfwd 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstdio 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstdio.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wstdio.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_stdio_config.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstring 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstring.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_memory.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_memcpy_s.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrterrno.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_string.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wstring.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecwchar 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtwchar.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wconio.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wctype.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wdirect.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wio.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_share.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wprocess.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtsys/stat.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtsys/types.h 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcrtdbg.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_new_debug.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludemutex 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludechrono 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludelimits 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeymath.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecfloat 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtfloat.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecmath 1> Note: including file: C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtmath.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludextgmath.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincluderatio 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludestdint.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludefunctional 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexfunctional 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexstring 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexmemory0 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstdint 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexatomic0.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesetjmp.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeimmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludewmmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludenmmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesmmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetmmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludepmmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeemmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexmmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludemmintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeammintrin.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetypeinfo 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_typeinfo.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesystem_error 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecerrno 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludestdexcept 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethread 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludememory 1> Note: including file: C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexmemory

отступы показывают вложенность.
кто кого дополнительно прицепил.

если у тебя там парочка файлов — пофигу.
но если их уже сотни — как то не круто получается в 100й раз парсить весь этот хлам.

есть два решение проблемы компиляции:

1. профилактический
в хедерах изначально только и только самый необходимый минимум.
по возможности везде стараемся обойтись forward declaration,
избегая до последнего включения других хедеров.

в спп подтягиваем только необходимый минимум хедеров.

2. предварительно скомпилированный заголовок.
pch — вундервафля компиляторов ц++.
кардинальным образом решает проблему избыточного включения заголовков,
и как следствия — медленной компиляции.

оба способа друг другу не мешают.
использовать оба варианта в работе — признак годного профессионализма.

Добавлено через 9 минут

Цитата
Сообщение от neit95
Посмотреть сообщение

Там схема не сложная: ищем все включения

вы там полноценный сишный препроцессор что ли запилили?
или как именно вы умыдряетесь найти все включения?

простой пример:

C++
1 2 3 4 5 6 7 8 9 10 
#ifdef dOS_WINDOWS     #include <windows_spec.hpp> #else     #include <posix_spec.hpp> #endif   // путь к файлу так же может быть взят из значения макроса // который может быть передан например, из командной строки // #define dADDITIONAL_SPEC <additional_spec.hpp> #include dADDITIONAL_SPEC

учитывая «препроцессорную сложность»,
возникли закономерные вопросы:

как именно вы ищете все включения?
что конкретно ты подразумевал под словами: «схема не сложная» ?

Цитата
Сообщение от neit95
Посмотреть сообщение

коментим первое, компилим. Если скомпилировалось — значит лишнее. И так со всеми.

сколько часов по времени занимает проверка проекта среднего размера, по такой схеме?

допустим, среднее время сборки небольшой библиотеки — 1.20 минут.
допустим, в ней используется порядка 100 разных заголовков,
львиная часть которых описана в pch.h,
изменение которого, как известно,
приводит к полному ребилду всего проекта.

итого: 2 часа на сверку 100 заголовков.

как то не очень круто, да?

  • [x ] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • [x ] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • [x ] I have searched the issue tracker for a similar issue and not found a similar issue.

Environment

  • Development Kit: ESP32-Wrover-Kit
  • Kit version (for WroverKit): [v1|v2|v3|v4]
  • Module or chip used: [ESP32-WROOM-32]
  • IDF version (run git describe --tags to find it):
    // v3.2-dev-1148-g96cd3b75c
  • Build System: [Make|CMake]
  • Compiler version (run xtensa-esp32-elf-gcc --version to find it):
    // 1.22.0-80-g6c4433a
  • Operating System: [Windows]
  • Power Supply: [USB]

Problem Description

I am using Visual Studio 2017 to build projects for ESP32, anyway it keeps me warning me about the following possible error :
STRUCT_AFIELD_A(char,1,XCHAL_CP1_SA_ALIGN,CS_SA_,cp1,XCHAL_CP1_SA_SIZE)

Error (active) E0070 incomplete type is not allowed Sketch2 c:UsersYordanAppDataLocalarduino15packagesesp32hardwareesp321.0.0toolssdkincludeesp32xtensaxtruntime-core-state.h 166

and this reapeats for all of the follows :
STRUCT_AFIELD_A(char,1,XCHAL_CP0_SA_ALIGN,CS_SA_,cp0,XCHAL_CP0_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP1_SA_ALIGN,CS_SA_,cp1,XCHAL_CP1_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP2_SA_ALIGN,CS_SA_,cp2,XCHAL_CP2_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP3_SA_ALIGN,CS_SA_,cp3,XCHAL_CP3_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP4_SA_ALIGN,CS_SA_,cp4,XCHAL_CP4_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP5_SA_ALIGN,CS_SA_,cp5,XCHAL_CP5_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP6_SA_ALIGN,CS_SA_,cp6,XCHAL_CP6_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP7_SA_ALIGN,CS_SA_,cp7,XCHAL_CP7_SA_SIZE)

The projects compile without problem, but this is sitting there all the time.
I am just posting it in just-in-case scenario.

Expected Behavior

unknown

Actual Behavior

unknown

Steps to repropduce

  1. Install Arduino Studio.
  2. Install Visual Studio 2017.
  3. install «VisualMicro» plugin.
  4. Try to build any project and check the Error list.
  • [x ] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • [x ] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • [x ] I have searched the issue tracker for a similar issue and not found a similar issue.

Environment

  • Development Kit: ESP32-Wrover-Kit
  • Kit version (for WroverKit): [v1|v2|v3|v4]
  • Module or chip used: [ESP32-WROOM-32]
  • IDF version (run git describe --tags to find it):
    // v3.2-dev-1148-g96cd3b75c
  • Build System: [Make|CMake]
  • Compiler version (run xtensa-esp32-elf-gcc --version to find it):
    // 1.22.0-80-g6c4433a
  • Operating System: [Windows]
  • Power Supply: [USB]

Problem Description

I am using Visual Studio 2017 to build projects for ESP32, anyway it keeps me warning me about the following possible error :
STRUCT_AFIELD_A(char,1,XCHAL_CP1_SA_ALIGN,CS_SA_,cp1,XCHAL_CP1_SA_SIZE)

Error (active) E0070 incomplete type is not allowed Sketch2 c:UsersYordanAppDataLocalarduino15packagesesp32hardwareesp321.0.0toolssdkincludeesp32xtensaxtruntime-core-state.h 166

and this reapeats for all of the follows :
STRUCT_AFIELD_A(char,1,XCHAL_CP0_SA_ALIGN,CS_SA_,cp0,XCHAL_CP0_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP1_SA_ALIGN,CS_SA_,cp1,XCHAL_CP1_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP2_SA_ALIGN,CS_SA_,cp2,XCHAL_CP2_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP3_SA_ALIGN,CS_SA_,cp3,XCHAL_CP3_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP4_SA_ALIGN,CS_SA_,cp4,XCHAL_CP4_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP5_SA_ALIGN,CS_SA_,cp5,XCHAL_CP5_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP6_SA_ALIGN,CS_SA_,cp6,XCHAL_CP6_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP7_SA_ALIGN,CS_SA_,cp7,XCHAL_CP7_SA_SIZE)

The projects compile without problem, but this is sitting there all the time.
I am just posting it in just-in-case scenario.

Expected Behavior

unknown

Actual Behavior

unknown

Steps to repropduce

  1. Install Arduino Studio.
  2. Install Visual Studio 2017.
  3. install «VisualMicro» plugin.
  4. Try to build any project and check the Error list.

В такой ситуации вам надо принять волевое решение о том, какой тип (и, соответственно, заголовок) считать более низкоуровневым, а какой — более высокоуровневым. При включении заголовочных файлов, разрешается включать только более низкоуровневые заголовки в более высокоуровневые заголовки, но не наоборот. При необходимости упомянуть в низкоуровневом заголовке тип из более высокоуровневого заголовка просто делается предварительное объявление типа.

Например, в вашем случае естественно было бы считать тип Elements и заголовок Elements.h более низкоукровневым, а тип Game и заголовок Game.h — более высокоуровневым.

В такой ситуации в заголовочном файле Elements.h мы делаем предварительное объявление класса Game, но Game.h в Elements.h ни в коем случае не включаем

// Elements.h
#ifndef ELEMENTS_H_
#define ELEMENTS_H_
class Game; // Предварительное объявление высокоуровневого типа
class Elements
{
...
friend class Game;
Game *_thisGame;
void setGamePtr(Game *game);
void foo();
...
};
#endif /* ELEMENTS_H_ */

А заголовочный файл Game.h реализуем «обычным» образом, т.е. ни о чем не беспокоясь включаем в него Elements.h

// Game.h
#ifndef GAME_H_
#define GAME_H_
#include <vector>
#include "Elements.h"
class Game
{
...
public:
int _gameInt;
void setup();
std::vector<Elements*> _elements;
...
};
#endif /* GAME_H_ */

Далее, в файл реализации Elements.cpp спокойно включаем все, что нам нужно, т.е. и Elements.h, и Game.h

// Elements.cpp
#include "Elements.h"
#include "Game.h"
...
void Elements::setGamePtr(Game *game)
{
_thisGame = game;
}
...
void Elements::foo()
{
...
(*_thisGame)->_gameInt = 5;
...
}

А в Game.cpp достаточно включить Game.h (но ничего страшного не случится, если вы включите и Elements.h тоже)

// Game.cpp
#include "Game.h"
...
void Game::setup()
{
...
for (auto it =  _elements.begin(); it != _elements.end(); it++) (*it)->setGamePtr(this);
...
}

Вот и все.

При этом у вас есть полная свобода в реализации класса Game — вы можете реализовывать его методы где угодно, в т.ч. в Game.h, т.е. можете обойтись без Game.cpp вообще. Также вы можете содержать в классе Game подобъекты класса Element, то есть напрямую, а не через указатель.

А вот с классом Elements у вас будут ограничения — полным типом тип Game будет являться только в Elements.cpp и все методы, требующие полноты типа Game придется реализовывать именно там. То есть класс Elements может содержать только непрямые ссылки (указатели) на класс Game.

При таком разбиении вы не можете реализовывать методы Elements, работающие с Game, как inline функции. Но при необходимости и это достижимо заведением дополнительного включаемого файла.

#c #visual-studio

Вопрос:

Я использую сообщество Visual studio 2019 , проект ue4 из исходного кода. Я использую html5, уже протестированную сборку ungine, это нормально.

Я проект выживания, у меня ошибка:

 Severity    Code    Description Project Path    File    Line    Suppression State
Error (active)  E0070   incomplete type is not allowed  SurvivalGame    F:APPSrocket-craftrocket-craftversions4.24-SurvivalEpicSurvivalGameSeries-4.24SurvivalGameSourceSurvivalGame   F:APPSrocket-craftrocket-craftversions4.24-SurvivalEpicSurvivalGameSeries-4.24SurvivalGameSourceSurvivalGameSTypes.h  87  

Кодовая Строка:

 //                                                                     error mark
PointDamageEvent.DamageTypeClass = DamageTypeClass ? DamageTypeClass : UDamageType::StaticClass();

Исходная ошибка происходит из сборки emscripten, но в любом случае даже в visual studio, когда я открываю критический файл, я вижу тот же журнал ошибок.

Я не опытный программист на c ! Как избежать этого любого предложения …

Весь остальной код выглядит так :

Это случайная строка из проекта

 
void ASBaseCharacter::FellOutOfWorld(const class UDamageTypeamp; DmgType)
/* Fallback to default DamageType if none is specified */
UDamageType const* const DamageType = DamageEvent.DamageTypeClass ? DamageEvent.DamageTypeClass->GetDefaultObject<UDamageType>() : GetDefault<UDamageType>();
Die(Health, FDamageEvent(UDamageType::StaticClass()), Killer, nullptr);
UCLASS()
class SURVIVALGAME_API USDamageType : public UDamageType
TSubclassOf<UDamageType> PunchDamageType;
etc...

Комментарии:

1. Эта ошибка обычно означает, что вы отправляете объявление класса/структуры, но никогда не включаете для него фактический исходный файл. Включен ли заголовок для DamageTypeClass включения?

2. Это ue4 , я не уверен, я уверен, что #include <utility> это не решение (из stackoverflow) …

3. Он жалуется на SurvivalGame класс. Проверьте, есть ли у вас там какие-либо прямые объявления. Это утверждения типа class Something; или struct SomethingElse; , как правило, в вашем заголовочном файле. Убедитесь, что все эти вещи затем #include включены в ваш cpp

4. Да, это было простое исправление, я просто смотрю аналогичную ситуацию в других файлах, и сборка теперь работает !

Написание программы klonkide для моего последнего проекта года.

Но теперь произошла ошибка, которая ошеломила меня.

Это черновик моей программы клондайк;

// ConsoleApplication18.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"#include <iostream>
#include <cstdlib>
#include <cctype>
using namespace std;
// Removed part
class card {
char *rank[] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
char *suit[] = {"S", "D", "H", "C"};
char *show[] = { "Up", "Down" };
};

Однако на «* rank []» была ошибка, которая гласит: «Неполный тип недопустим». Также я получаю ошибку C2011 при запуске. Кроме того, когда я попытался написать класс, вышеприведенные символы начнут получать ошибку типа Incomplete. Помогите?

Теперь я удалил «struct», но ошибка неполного типа все еще существует, и теперь она показывает:

Ошибка C2229 класса «карта» имеет недопустимый массив нулевого размера
Ошибка C2997 ‘card :: show’: невозможно определить границы массива из инициализатора класса

На самом деле структура была только там из-за этой ошибки.

РЕДАКТИРОВАТЬ: хорошо. Теперь я решил эту проблему, диктуя массивы таким образом, как один из ответов ниже. Я также нашел другую проблему, которая скоро заслужит другой вопрос.

-2

Решение

Вы не можете иметь struct card а также class card в то же время.

0

Другие решения

Вы объявили два типа с одним и тем же именем, нарушая одно правило определения.

Учтите, что в C ++ строковые литералы имеют типы постоянных символьных массивов. Таким образом, например, второй класс должен быть определен как

class card {
const char *rank[13] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
const char *suit[4] = {"S", "D", "H", "C"};
const char *show[2] = { "Up", "Down" };
};

Что касается сообщения об ошибке, размеры массивов в определении класса должны быть указаны явно.

0

Visual Studio 2013 не полностью совместим с C ++ 11, посмотрите на этот ответ
Ошибка: невозможно указать явный инициализатор для массива

Вы можете инициализировать вектор в ctor.

class card_class { std::vector<std::string> rank; std::vector<std::string> suit; std::vector<std::string> show; public: card_class() { rank = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; suit = { "S", "D", "H", "C" }; show = { "Up", "Down" }; } }; 

-1

Вопрос:

Кто-нибудь знает, что означает эта ошибка и почему она возникает, когда я пытаюсь определить массив внутри структуры?

struct test{ int idk[] = { 1,2,3 }; }; 

Почему массив idk неполный тип или что-то еще?

Заранее спасибо.

Ps. Мне нужно это, поэтому я могу получить доступ к этим массивам из тестовой структуры.

Лучший ответ:

При объявлении переменной в локальной области (например, в теле функции, например) вы можете сделать это, и компилятор не будет жаловаться, он выведет, что вы имеете в виду массив из 3 элементов.

void someFunc()
{
int idk[] = { 1,2,3 }; // Ok, so idk is in fact a int[3];
// Do whatever work...
}

Когда вы делаете то же самое в объявлении класса или структуры, компилятор не хочет выводить это для вас, поэтому в основном вам нужно быть более строгим.

Для полной причины, почему вы можете видеть здесь (в чем причина невозможности вывода размера массива из строки инициализации в переменной-члене?) Среди других мест.

Поэтому, чтобы заставить его работать, вам нужно:

struct test 
{
int idk[3] = { 1,2,3 };
};

Что касается того, почему люди могут не любить этот вопрос, ну, это своего рода мирский вопрос, и действительно любой поиск в google даст ответ. Сам компилятор отменит ошибку, и просто поиск этого будет в большинстве случаев найти ответ для вас.

В принципе, такой вопрос говорит сообществу, что вы не проводили никаких исследований до того, как задали свой вопрос.

С помощью Visual Studio компилятор создает эту ошибку: Ошибка C2997 ‘test :: idk’: привязка массива не может быть выведена из инициализатора в классе

Это довольно ясно.

Мик

Ответ №1

 array bound cannot be deduced from an in-class initializer 

Поэтому изменение фрагмента на

struct test{ int idk[3] = { 1,2,3 }; 

приводит к успешной компиляции.

Неполный тип

  • Ограничения при использовании неполных типов
  • Примеры неполных типов и способы их полного определения

Неполный тип – это элемент, который сообщает компилятору, что существует тип с таким именем, но ничего не говорит ему о том, как он реализован: какие есть функции, переменные и т. д. Обычно эти типы полностью определяются позже, поэтому такое объявление часто называют опережающим (forward declaration).

К неполным типам относятся:

  • тип void;
  • структуры, классы, объединения, для которых ещё не определена реализация;
  • массивы неопределённого размера;
  • массивы элементов неполного типа.

Чтобы тип стал полным (полностью определенным) необходимо указать недостающую информацию. Отдельно стоит отметить тип void, который не может быть полным в принципе.

Ограничения при использовании неполных типов

Так как неполный тип ничего не говорит компилятору о своём внутреннем устройстве, то не получится скомпилировать код, который пытается получить доступ к его содержимому. Также невозможно будет выполнить операции, требующие знания точного размера типа. Для этого необходимо знать размер типов, которые содержатся в требуемом классе.

Примеры неполных типов и способы их полного определения

Неполный тип можно получить при использовании следующих конструкций языка:

Опережающая декларация (forward-declaration):

class MyType;

Указатель на неизвестный тип:

struct MyType *myPtr;

Массив, содержащий элементы неопределённого типа (даже если количество элементов известно):

MyType b[10];

Во всех этих случаях, для полного определения типа, мы обязаны предоставить где-нибудь реализацию типа ‘MyType’. Например, такую:

class MyType {
int someNumber;
}

В таком случае все ограничения, накладываемые на неполные типы, будут сняты.

Отдельного разъяснения заслуживает ситуация с массивами неопределённого размера, т. к. при их использовании есть несколько нюансов. Например:

extern int a[];        // Неполный тип (массив неизвестного 
// размера с элементами типа 'int')
int b[] = { 1, 2, 3 }; // Полный тип (массив из трёх значений типа 'int')
int c[10];             // Полный тип

Также на массивы неизвестного размера могут быть созданы ссылки и указатели, но в языке С++ они не могут быть инициализированы (или присвоены) указателями на массивы с известным размером. Данное ограничение отсутствует в языке С, т. к. там указатели на обычные массивы и на массивы неизвестного размера совместимы, а поэтому могут свободно конвертироваться и присваиваться в обоих направлениях.

extern int a[];
int (&a1)[]  = a;    // ОК
int (*a2)[]  = &a;   // ОК
int (*a3)[2] = &a;   // Ошибка в С++, но корректно в С
int b[] = {1, 2, 3};
int (&b1)[] = b;     // Ошибка
int (*b2)[] = &b;    // Ошибка в С++, но корректно в С

Присылаем лучшие статьи раз в месяц

In my code Main.cpp I have the following shown below. The issue I am running into us with tuple<int, int, int>
I keep getting these three errors

function "sPA" returns incomplete type "trie", incomplete type is not allowed, and
cannot convert to incomplete class "trie"

What am I doing wrong here to make this error?

 // Main.cpp
 #include <iostream>
 #include <string>
 using namespace std;

 typedef pair<int, int> int_pair;
 typedef tuple<int, int, int> trie;



 int_pair sum_and_product(int a, int b) {
     return int_pair(a + b, a * b);
 }

 trie sPA(int a, int b, int c) {
     trie t{ a + b + c,a * b * c,((a + b + c) / 3) };
     return t;
 } 

 void consuming_templates() {
     int a = 2, b = 3, c = 4;
     auto results = sum_and_product(a,b);
     cout << "sum = " << results.first << "|product = " << results.second << endl;
     auto r2 = sPA(a, b, c);
 }

int main(int argc, char* argv[]) {

    consuming_templates();

    return 0;
}

  • [x ] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • [x ] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • [x ] I have searched the issue tracker for a similar issue and not found a similar issue.

Environment

  • Development Kit: ESP32-Wrover-Kit
  • Kit version (for WroverKit): [v1|v2|v3|v4]
  • Module or chip used: [ESP32-WROOM-32]
  • IDF version (run git describe --tags to find it):
    // v3.2-dev-1148-g96cd3b75c
  • Build System: [Make|CMake]
  • Compiler version (run xtensa-esp32-elf-gcc --version to find it):
    // 1.22.0-80-g6c4433a
  • Operating System: [Windows]
  • Power Supply: [USB]

Problem Description

I am using Visual Studio 2017 to build projects for ESP32, anyway it keeps me warning me about the following possible error :
STRUCT_AFIELD_A(char,1,XCHAL_CP1_SA_ALIGN,CS_SA_,cp1,XCHAL_CP1_SA_SIZE)

Error (active) E0070 incomplete type is not allowed Sketch2 c:UsersYordanAppDataLocalarduino15packagesesp32hardwareesp321.0.0toolssdkincludeesp32xtensaxtruntime-core-state.h 166

and this reapeats for all of the follows :
STRUCT_AFIELD_A(char,1,XCHAL_CP0_SA_ALIGN,CS_SA_,cp0,XCHAL_CP0_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP1_SA_ALIGN,CS_SA_,cp1,XCHAL_CP1_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP2_SA_ALIGN,CS_SA_,cp2,XCHAL_CP2_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP3_SA_ALIGN,CS_SA_,cp3,XCHAL_CP3_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP4_SA_ALIGN,CS_SA_,cp4,XCHAL_CP4_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP5_SA_ALIGN,CS_SA_,cp5,XCHAL_CP5_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP6_SA_ALIGN,CS_SA_,cp6,XCHAL_CP6_SA_SIZE)
STRUCT_AFIELD_A(char,1,XCHAL_CP7_SA_ALIGN,CS_SA_,cp7,XCHAL_CP7_SA_SIZE)

The projects compile without problem, but this is sitting there all the time.
I am just posting it in just-in-case scenario.

Expected Behavior

unknown

Actual Behavior

unknown

Steps to repropduce

  1. Install Arduino Studio.
  2. Install Visual Studio 2017.
  3. install «VisualMicro» plugin.
  4. Try to build any project and check the Error list.

Цитата
Сообщение от PeterVl
Посмотреть сообщение

Просто я думал, что разница во времени компиляции не настолько ощутима.

когда ты пишешь в своём хедере:

этот заголовок в свою очередь подтягивает другие заголовки.
а те — ещё какие то.

в результате, там сверху прицепляются тонны библиотечного и не очень кода.
и все эти тонны компилятору приходится парсить каждый раз заново для каждой очередной cpp

если проект маленький, всего из нескольких файликов,
то на скорость компиляции действительно можно забить.

однако, на практике, проекты имеют свойство разрастаться.
и по мере их роста, скорость компиляции все ощутимее и ощутимее даёт о себе знать.

просто представь себе, сколько всякого хлама тянет за собой
единственное включение: #include <conditional_variable>

распечатка заголовков

Код

1>  Note: including file:  C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecondition_variable
1>  Note: including file:   C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xthread
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xthrcommon.h
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeyvals.h
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexkeycheck.h
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecrtdefs.h
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesal.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeConcurrencySal.h
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevadefs.h
1>  Note: including file:       C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt.h
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeuse_ansi.h
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xtime
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xtimec.h
1>  Note: including file:      C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrttime.h
1>  Note: including file:       C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wtime.h
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethr/xthreads.h
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludelimits.h
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetuple
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludenew
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeexception
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetype_traits
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexstddef
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstddef
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstddef.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstdlib
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstdlib.h
1>  Note: including file:           C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_malloc.h
1>  Note: including file:           C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_search.h
1>  Note: including file:           C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wstdlib.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeinitializer_list
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludextr1common
1>  Note: including file:       C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtmalloc.h
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_exception.h
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeeh.h
1>  Note: including file:         C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_terminate.h
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_new.h
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexutility
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeclimits
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeutility
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeiosfwd
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstdio
1>  Note: including file:         C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstdio.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wstdio.h
1>  Note: including file:           C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_stdio_config.h
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstring
1>  Note: including file:         C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtstring.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_memory.h
1>  Note: including file:           C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_memcpy_s.h
1>  Note: including file:            C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrterrno.h
1>  Note: including file:            C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_string.h
1>  Note: including file:             C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wstring.h
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecwchar
1>  Note: including file:         C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtwchar.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wconio.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wctype.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wdirect.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wio.h
1>  Note: including file:           C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_share.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcorecrt_wprocess.h
1>  Note: including file:          C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtsys/stat.h
1>  Note: including file:           C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtsys/types.h
1>  Note: including file:        C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtcrtdbg.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_new_debug.h
1>  Note: including file:   C:Program Files (x86)Microsoft Visual Studio 14.0VCincludemutex
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludechrono
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludelimits
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeymath.h
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecfloat
1>  Note: including file:       C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtfloat.h
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecmath
1>  Note: including file:       C:Program Files (x86)Windows Kits10Include10.0.10240.0ucrtmath.h
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludextgmath.h
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincluderatio
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludestdint.h
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludefunctional
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexfunctional
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexstring
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexmemory0
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecstdint
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexatomic0.h
1>  Note: including file:        C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeintrin.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesetjmp.h
1>  Note: including file:          C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeimmintrin.h
1>  Note: including file:          C:Program Files (x86)Microsoft Visual Studio 14.0VCincludewmmintrin.h
1>  Note: including file:           C:Program Files (x86)Microsoft Visual Studio 14.0VCincludenmmintrin.h
1>  Note: including file:            C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesmmintrin.h
1>  Note: including file:             C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetmmintrin.h
1>  Note: including file:              C:Program Files (x86)Microsoft Visual Studio 14.0VCincludepmmintrin.h
1>  Note: including file:               C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeemmintrin.h
1>  Note: including file:                C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexmmintrin.h
1>  Note: including file:                 C:Program Files (x86)Microsoft Visual Studio 14.0VCincludemmintrin.h
1>  Note: including file:         C:Program Files (x86)Microsoft Visual Studio 14.0VCincludeammintrin.h
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludetypeinfo
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime_typeinfo.h
1>  Note: including file:       C:Program Files (x86)Microsoft Visual Studio 14.0VCincludevcruntime.h
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludesystem_error
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludecerrno
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludestdexcept
1>  Note: including file:    C:Program Files (x86)Microsoft Visual Studio 14.0VCincludethread
1>  Note: including file:     C:Program Files (x86)Microsoft Visual Studio 14.0VCincludememory
1>  Note: including file:      C:Program Files (x86)Microsoft Visual Studio 14.0VCincludexmemory

отступы показывают вложенность.
кто кого дополнительно прицепил.

если у тебя там парочка файлов — пофигу.
но если их уже сотни — как то не круто получается в 100й раз парсить весь этот хлам.

есть два решение проблемы компиляции:

1. профилактический
в хедерах изначально только и только самый необходимый минимум.
по возможности везде стараемся обойтись forward declaration,
избегая до последнего включения других хедеров.

в спп подтягиваем только необходимый минимум хедеров.

2. предварительно скомпилированный заголовок.
pch — вундервафля компиляторов ц++.
кардинальным образом решает проблему избыточного включения заголовков,
и как следствия — медленной компиляции.

оба способа друг другу не мешают.
использовать оба варианта в работе — признак годного профессионализма.

Добавлено через 9 минут

Цитата
Сообщение от neit95
Посмотреть сообщение

Там схема не сложная: ищем все включения

вы там полноценный сишный препроцессор что ли запилили?
или как именно вы умыдряетесь найти все включения?

простой пример:

C++
1
2
3
4
5
6
7
8
9
10
#ifdef dOS_WINDOWS
    #include <windows_spec.hpp>
#else
    #include <posix_spec.hpp>
#endif
 
// путь к файлу так же может быть взят из значения макроса
// который может быть передан например, из командной строки
// #define dADDITIONAL_SPEC <additional_spec.hpp>
#include dADDITIONAL_SPEC

учитывая «препроцессорную сложность»,
возникли закономерные вопросы:

как именно вы ищете все включения?
что конкретно ты подразумевал под словами: «схема не сложная» ?

Цитата
Сообщение от neit95
Посмотреть сообщение

коментим первое, компилим. Если скомпилировалось — значит лишнее. И так со всеми.

сколько часов по времени занимает проверка проекта среднего размера, по такой схеме?

допустим, среднее время сборки небольшой библиотеки — 1.20 минут.
допустим, в ней используется порядка 100 разных заголовков,
львиная часть которых описана в pch.h,
изменение которого, как известно,
приводит к полному ребилду всего проекта.

итого: 2 часа на сверку 100 заголовков.

как то не очень круто, да?

Всем привет! Занялся тут UE5 и при компиляции проекта в Visual Studio 2019 возникает ошибка:

Unable to build while Live Coding is active. Exit the editor and game, or press Ctrl+Alt+F11 if iterating on code in the editor or game

И еще связанные с этим проблема компиляции при запущенном редакторе UE5

Error (active) E0070: incomplete typeError (active) E0070 invalid incomplete typeОшибка (активно)E0070 недопустимый неполный типD:Program FilesEpic GamesUE_5.0EngineSourceRuntimeSlateCorePublicLayoutBasicLayoutWidgetSlot.h

Первое решение это закрывать редактор UE5, удалить папку Binaries из вашего проекта UnrealEngine, и при запуске проекта заново разрешить UE5 пересобрать вашу сборку, там выскочит соответствующее окно.

А вот само собственно второе решение проблемы:

Понравилась статья? Поделить с друзьями:
  • Ошибка активации windows 10 после обновления
  • Ошибка активное рулевое управление бмв е70
  • Ошибка активированы динамики телевизора филипс пишет
  • Ошибка активации windows 10 pro 0xc004f213
  • Ошибка активного фильтра ошибка цепи pfc что делать