4

機能について2つ質問がありceil()ます..

  1. ceil()関数は C で実装されています。使用すると、正常に動作ceil(3/2)します。しかし、を使用するceil(count/2)と、カウントの値が 3 の場合、コンパイル時にエラーが発生します。

    /tmp/ccA4Yj7p.o(.text+0x364): 関数FrontBackSplit': : undefined reference toceil' collect2 で: ld が 1 つの終了ステータスを返しました

    2番目のケースでceil関数を使用するには? 提案してください。

  2. C で独自の ceil 関数を実装するにはどうすればよいですか。いくつかの基本的なガイドラインを教えてください。

ありがとう。

4

4 に答える 4

5

これを試してください:

#define CEILING_POS(X) ((X-(int)(X)) > 0 ? (int)(X+1) : (int)(X))
#define CEILING_NEG(X) ((X-(int)(X)) < 0 ? (int)(X-1) : (int)(X))
#define CEILING(X) ( ((X) > 0) ? CEILING_POS(X) : CEILING_NEG(X) )

コメント、証拠、議論については、リンクをチェックしてください: http://www.linuxquestions.org/questions/programming-9/ceiling-function-c-programming-637404/

于 2011-07-02T10:55:40.093 に答える
3

ceil関数のプロトタイプは次のとおりです。

double ceil(double)

私の推測では、変数countの型は double 型ではありません。C で ceil を使用するには、次のように記述します。

#include <math.h>
// ...
double count = 3.0;
double result = ceil(count/2.0);

std::ceilC++ では、 from <cmath>;を使用できます。std::ceil は、複数の型をサポートするためにオーバーロードされています。

#include <cmath>
// ...
double count = 3.0;
double result = std::ceil(count/2.0);
于 2010-05-09T05:26:10.773 に答える
3

このceil()関数は、数学ライブラリ に実装されていますlibm.so。デフォルトでは、リンカは gcc フロントエンド経由で呼び出された場合、このライブラリに対してリンクしません。そのライブラリにリンクする-lmには、コマンド ラインを gcc に渡します。

gcc main.c -lm
于 2010-05-09T04:55:18.087 に答える