2014-04-06 42 views
0

我有一個非常簡單的問題,我想但是找不到解決方案。我已將「mathcalls.h」文件包含到我的一個項目中,因爲我需要使用它的pow(double, double)方法。因此,我已經添加了文件路徑爲...包含在生成/選項文件中的路徑

...的製作/選項文件:

-Iusr/include/i386-linux-gnu/bits 

...的包括IDE(Qt Creator的)的文件:

/usr/include/i386-linux-gnu/bits 

對於包括我試圖

#include "mathcalls.h" 
#include <mathcalls.h> 

但我建設項目時,我得到的錯誤:

/home/USER/SolverNEW/multiphaseEulerFoamNEW.C:46: error: mathcalls.h: 
No such file or directory 

當看着這個,看起來編譯器只在我的項目目錄中搜索,儘管我已經添加了文件的路徑? 請注意,在「usr/include/i386-linux-gnu/bits」中,只有root擁有完全訪問權限,其他權限只被授權「訪問文件」。

我該如何專業解決這個問題?

回答

1

以專業的方式來獲得對double pow(double x, double y)訪問:

#include <cmath> 

,或者在必要的時候:

#include <math.h> 

再就是與/usr/include圍繞下的子目錄卑躬屈膝沒有問題。

+0

兩者都包括工作,但仍然沒有找到這些包含的方法'pow(double,double)',我得到錯誤:'SQMOM/SourceTermIntegralFunctions/IntegralFunctionBeta.H:16:error:call of overload'pow double&,const double&)'是不明確的。候選人是: /usr/include/i386-linux-gnu/bits/mathcalls.h:155:1:note:double pow(double,double)...'。我還包含在make/options中:'-Iusr/include',其中可以找到math.h。 – Streight

+0

令人費解。除非你正在處理有缺陷的系統,否則'pow()'或'std :: pow()'應該解決。 '/ usr/include'下'i386-linux-gnu/bits'中的任何內容都不能直接使用。 –

+0

嘗試此代碼:'#include #include int main() {double d = std :: pow(3.14,2.78); std :: cout << d <<「\ n」;返回0; }'。它用'std :: pow'和'pow'完全爲我編譯;後者讓我感到驚訝。我正在使用'g ++ -O3 -g -std = C++ 11 -Wall -Wextra -Werror math.cc -o math'編譯Ubuntu 13.10 VM。請嘗試獨立代碼,不要有任何'-I'選項。如果可行,請嘗試添加'-I'選項,直到出現問題。然後刪除'-I'選項。我想知道是否有一個'-I'增加了一個文件來提前匹配''或''。 –

相關問題