2011-02-02 8 views
0

私はXCodeで取り組んでいる小さなC++プロジェクトを持っています。私はWindowsマシン上でVisual Studio上でいくつかの作業をしたいと思っています。私は新しいプロジェクトを作り、すべてのソースファイルを新しいプロジェクトにコピーしました。外部依存関係はありません。小さなC++プロジェクトをXCodeからVisual Studioに移す。天井/床は認識されませんか?

ここで、Visual Studioでは、私のフロアコールやceilコールが嫌いです。私はceilまたはfloorへの呼び出しごとに以下のコンパイラエラーが発生します。

「切り上げ」:オーバーロードさ 関数のあいまいな呼び出し

これらの関数がオーバーロードされていない、と私は、この.cppファイルにヘッダファイル内のmath.hを輸入してきました。何がありますか?

+2

使用方法を確認する必要があります。まず、 ''の代わりに ''をインポートするはずです。 –

答えて

3

から。 - >使用する名前空間を削除し、すべての発生の前にstd ::を追加します。

コンパイラはCEIL(フロートFOO)またはCEIL(ダブルFOO)を使用する切り上げのどのバージョンを知っていない可能性があります。

- >通話の引数が適切に入力されているかどうかを確認してください。

+0

C++には 'ceil()'テンプレートがありますか? – ssmir

+0

'std :: ceil()'テンプレートはありませんので、答えの2番目の部分が奇妙です。しかし、最初の部分の+1 – ssmir

+0

いいえ私は間違っていた、私はanwerを編集します –

1

コンパイラはいくつかのバージョンの 'ceil'を見つけて、どちらを使うべきかをあなたに伝えてほしい。 プリプロセッサを使って 'ceil'がどこから得られたかを調べ、あなたのインクルードを修正します。 (あなたが名前空間stdを使用して悪を使用している場合)には、STD ::切り上げと切り上げの間の衝突であるかもしれない

http://www.cplusplus.com/reference/clibrary/cmath/ceil/

/* ceil example */ 
#include <stdio.h> 
#include <math.h> 

int main() 
{ 
    printf ("ceil of 2.3 is %.1lf\n", ceil (2.3)); 
    printf ("ceil of 3.8 is %.1lf\n", ceil (3.8)); 
    printf ("ceil of -2.3 is %.1lf\n", ceil (-2.3)); 
    printf ("ceil of -3.8 is %.1lf\n", ceil (-3.8)); 
    return 0; 
} 

またはそれ以上のC++

/* ceil example */ 
#include <cstdio> 
#include <cmath> 

int main() 
{ 
    printf ("ceil of 2.3 is %.1lf\n", std::ceil (2.3)); 
    printf ("ceil of 3.8 is %.1lf\n", std::ceil (3.8)); 
    printf ("ceil of -2.3 is %.1lf\n", std::ceil (-2.3)); 
    printf ("ceil of -3.8 is %.1lf\n", std::ceil (-3.8)); 
    return 0; 
} 
関連する問題