Possible Duplicate:
pow() isn’t defined

void octal2decimal(char *octal, char *decimal) {
int oct = atoi(octal);
int dec = 0;
int p = 0;

while (oct!=0) {

    dec = dec + (oct%10) * pow(8,p++); //since oct is base 8
    oct/=10;
}
*decimal = (char)dec;
*/
}

对于上面的代码,我得到了这个错误我不知道为什么要包含math.h,但仍然得到了这个错误
/tmp/cck07bLe.o: In function 'octal2decimal':
data-converter.c:(.text+0x35f): undefined reference to 'pow'
collect2: ld returned 1 exit status
这是什么意思?我该怎么解决呢?

最佳答案

pow是在数学库(libm中定义的,默认情况下不会链接到数学库中。因此,您应该将-lm添加到编译命令中以获取数学库。例如,如果您使用gcc

gcc data-converter.c -o data-converter -lm

顺便说一下,pow不是计算2的整数幂的正确方法。你应该换个班:
dec += (oct%10) << (3*p++);
oct /= 10;

向左移位3*p相当于乘以8p,但避免使用浮点数。

关于c - 对内置函数'pow'的c的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13053260/

10-10 21:23