2013-04-16 62 views
0

我正在做定點實現,我正在運行測試,我試圖用cmath頭的操作精度檢查我的定點操作的精度。.cpp文件中的兩個名稱空間作比較

所以這裏我是TEST.CPP

#include <fixed_point_header.h> 
#include <stdio.h> 


int main() 
{ 
    float fp1 = 3.14159; 
    float fp2 = 4.1723; 
    float fp3,fp4,fp5,fp6; 
    fp3 = fp1+fp2; 
    fp4 = fp1-fp2; 
    fp5 = fp1*fp2; 
    fp6 = fp1/fp2; 

    printf("float fixed point summation data ==%f\n",fp3); 
    printf("float fixed point difference data ==%f\n",fp4); 
    printf("float fixed point multiplied data ==%f\n",fp5); 
    printf("float fixed point divided data ==%f\n",fp6); 
} 

上面的代碼測試的精碼,但現在我需要計算相同的操作,看看在同一TEST.CPP從CMATH頭的結果文件。所以我如何繼續,是否有可能與兩個名稱空間(我的頭文件的一個名稱空間,一個名稱空間標準)?

#include <fixed_point_header.h> 
#include <stdio.h> 
#include <math.h> 

using namespace fp; 


    int main() { 

    ...// do the fixedpoint operations here 

    } 
    using namespace std; 

    int main() { 

    ...// do the cmath operations here 

    } 

是否有可能像上面的代碼,誰能幫如何與它進行。

感謝

+0

你不能使用那樣的命名空間。只能有一個主要功能。我不確定你想要做什麼,僅僅編寫相同的代碼兩次,但使用不同的* explicit *名稱空間有什麼不對?換句話說,不要使用'using namespace ...;'。我想你可能對什麼名稱空間有錯誤的想法。 – john

+0

*「現在我需要計算相同的操作並查看cmath頭文件的結果」* - 你能解釋一下你的意思嗎? – JBentley

+0

@ john'只用兩次寫入相同的代碼但使用不同的顯式名稱空間有什麼不對?'我需要兩次編寫相同的代碼,但在兩個測試文件中使用不同的顯式名稱空間? – Rd7

回答

1

答案基於您的評論:

fixed_point_header.h的內容:

namespace fp // This places your function inside the fp namespace 
{ 
    float pow(float base, float exp) 
    { 
     return 0; // Replace with your algorithm 
    } 
} 

源文件:

#include <iostream> 
#include <cmath> 
#include "fixed_point_header.h" 

int main() 
{ 
    float f1 = 2.0; 
    float f2 = 3.0; 
    std::cout << pow(f1, f2) << std::endl;  // from cmath 
    std::cout << fp::pow(f1, f2) << std::endl; // from your header 
    return 0; 
} 

輸出:

8 
0 
+0

謝謝,所以可以從頭文件的':: scope'看到區別,沒有範圍。 – Rd7

+0

是的,通過在函數名前加上'fp ::'(稱爲完全限定它),你告訴編譯器你的意思是'fp'命名空間中的'pow'函數,而不是'pow'函數從導入的全局名稱空間。 – JBentley

+0

您也可以通過用'namespace X {#包括

}'包圍包含來強制頭部進入名稱空間。請注意,這樣做並不好,可能會破壞一些代碼,但在某些情況下,這是唯一的方法。 – dascandy