1) Могу ли я подключать какой-либо хедер многократно (в разных cpp-файлах) внутри одного большого проекта?
2) Можно ли делать у двух хедеров ссылки #include друг на друга ? Или лучше, если надо кусок оттуда и кусок оттуда сделать третий хедер и сpp и там описать общие классы и типы ?
1) да
2) вообще можно, но нежелательно — означает кривую архитектуру. лучше выделять в отдельный файл общие части, да.
в .h пихай только объявления, например extern const double Pi180;
в соответствующий .cpp пихай определения, например const double Pi180 = M_PI/180;
Возникла другая проблема - когда я в другом хедере, сославшись на хедер constants.h объявляю массив, например
interfaces.h
#include "constants.h"
typedef bool TRepersScanAngles[MAX_COUNT_REPER_ANGLE];
где константа MAX_COUNT_REPER_ANGLE была объявлена в constants.h как:
extern const int MAX_COUNT_REPER_ANGLE;
а в constants.cpp как:
const int MAX_COUNT_REPER_ANGLE = 3;
то выдается ошибка "array bound is not an integer constant before ']' token"
судя по всему, на момент обработки interfaces.h он еще не знает значения MAX_COUNT_REPER_ANGLE. можно решить это, сделав MAX_COUNT_REPER_ANGLE дефайном вместо константы: в constants.h #define MAX_COUNT_REPER_ANGLE 3