在C中实现ceilfunction

我有两个关于ceil()函数的问题..

  1. ceil()函数在C中实现。如果我使用ceil(3/2) ,它可以正常工作。 但是当我使用ceil(count/2) ,如果count的值是3,那么它会给出编译时错误。

    /tmp/ccA4Yj7p.o(.text+0x364):在函数FrontBackSplit': : undefined reference to ceil’colle2:ld返回1退出状态

    如何在第二种情况下使用ceil函数? 请建议。

  2. 如何在C中实现自己的ceilfunction。请提供一些基本指导。

谢谢。

ceil()函数在数学库libm.so 。 默认情况下,链接器在通过gcc前端调用时不会链接到此库。 要链接到该库,请在命令行上将-lm传递给gcc:

 gcc main.c -lm 

试试这个:

 #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) ) 

查看链接以获取意见,certificate和讨论: http : //www.linuxquestions.org/questions/programming-9/ceiling-function-c-programming-637404/

ceil函数的原型是:

 double ceil(double) 

我的猜测是你的变量count的类型不是double类型。 要在C中使用ceil,你会写:

 #include  // ... double count = 3.0; double result = ceil(count/2.0); 

在C ++中,您可以使用中的std::ceil ; 重载std :: ceil以支持多种类型:

 #include  // ... double count = 3.0; double result = std::ceil(count/2.0); 
 double ceil (double x) { if (x > LONG_MAX) return x; // big floats are all ints return ((long)(x+(0.99999999999999997))); }