У меня есть программа, которая опирается на несколько включенных файлов. Когда я определяю include в порядке, показанном ниже, программа компилируется штрафом.Ошибка компиляции из-за ошибки синтаксиса в файле заголовка
#include <iostream>
#include "opencv2/cvconfig.h"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/internal.hpp" // For TBB wrappers
#include "arrayfire.h"
Однако при переключении двух последних включает в себя, как показано ниже
#include <iostream>
#include "opencv2/cvconfig.h"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "arrayfire.h"
#include "opencv2/core/internal.hpp" // For TBB wrappers
Я получаю ошибки компилятора:
1> d: \ библиотеки \ tbb41 \ tbb41_20130613oss \ включать \ tbb \ task.h (765): ошибка C2059: синтаксическая ошибка: '{' 1> d: \ libraries \ tbb41 \ tbb41_20130613oss \ include \ tbb \ task.h (765): ошибка C2334: неожиданный токен), предшествующий '{'; пропуская видимую функцию корпус
Это неожиданно, и я хотел бы исправить это. Все это включает библиотеки (OpenCV и ArrayFire). Любые предложения о том, что может быть причиной и как решить эту проблему?
Редактировать Вот соответствующая часть task.h:
759 #if __TBB_TASK_GROUP_CONTEXT
760 //! This method is deprecated and will be removed in the future.
761 /** Use method group() instead. **/
762 task_group_context* context() {return prefix().context;}
763
764 //! Pointer to the task group descriptor.
765 task_group_context* group() { return prefix().context; }
766 #endif /* __TBB_TASK_GROUP_CONTEXT */
В строке 765, то IDE жалуется {
, говоря Error: expected an identifier
Все зависит от того, что находится внутри заголовков, особенно последних двух. Вам нужно будет посмотреть, какое из двух последних включает в себя, чтобы узнать, что такое зависимость. Может возникнуть проблема, если вы откроете 'task.h' и посмотрите на строку 765 и узнаете, какой из двух последних заголовков включает' task.h'. Является ли 'arrayfire.h' свой собственный заголовочный файл? Без раскрытия содержимого заголовков было бы почти невозможно, если бы кто-то здесь предоставил вам прямое решение. – lurker
no arrayfire - это внешняя библиотека. – Alexey
ОК, но мое другое предложение все еще применяется. Также проверьте документацию по библиотеке/заголовкам. Есть ли причина, по которой вам нужно обменивать заголовки? Там может быть известная зависимость, где они должны быть в том порядке, который действительно работает. – lurker