У меня возникли проблемы с получением моего компилятора (g ++) для включения определенных файлов заголовков из библиотек ускорения C++, которые находятся в подкаталоге моего каталога bin. В частности, я пытаюсь включить файл заголовка рационального класса, rational.hpp. Сначала я попытался в том числе с помощью этого скриптового кода в моем Makefile:Ошибка, возникающая из Boost Rational
intRational.o: intRational.h
g++ -I /home/.../boost_1_58_0 -c intRational.h
Однако, это дает мне эту ошибку:
In file included from testRational.cpp:11:0:
intRational.h:17:1: error: expected class-name before ‘{’ token
{
^
make: *** [testRational.o] Error 1
Это intRational.h:
#ifndef _INTRATIONAL_H
#define _INTRATIONAL_H
#include<boost/rational.hpp>
//Derived class
class intRational: public rational
{
bool simplify;
public:
void setSimple()
{
simplify=true;
};
void setNoSimplify()
{
simplify=false;
};
bool getFlag()
{
return simplify;
};
};
#endif // _INTRATIONAL_H
Далее я заменил
#include<boost/rational.hpp>
Wi го полного каталога
#include</home/.../boost_1_58_0/boost/rational.hpp>
(... представляет собой часть каталога, которая показывает мою личность)
Это зафиксировала первую проблему, но теперь у меня есть новая ошибка:
In file included from intRational.h:14:0,
from testRational.cpp:11:
/home/.../boost_1_58_0/boost/rational.hpp:82:78: fatal error: boost/integer/common_factor_rt.hpp: No such file or directory
#include <boost/integer/common_factor_rt.hpp> // for boost::integer::gcd, lcm
Эта ошибка возникает из файла библиотеки boost, rational.hpp. Я не хочу, чтобы поставить полный каталог в #include, потому что тогда мне придется сделать это для #include, которые находятся в заголовочных файлах, на которые ссылается common_factor_rt.hpp, например, и каждый заголовок файл вниз, что много работы. Я не должен этого делать, потому что это отчасти поражает цель использования библиотек.
Обычно вы не хотите компилировать заголовочные файлы, см. Http: //stackoverflow.com/questions/333889/why-have-header-files-and-cpp-files-in-c? S = 2 | 4.5908 – sehe