C的pow()不适用于变量指数

2 c pow

我有一小段代码:

#include <math.h>

int main(void){
    pow(2.0,7.0);
    //Works

    double x = 3.0;
    pow(2.0,x);
    //Fails with error "undefined reference to 'pow'"
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

-lm在Eclipse编译器设置中链接了:gcc -O0 -g3 -Wall -lm -c -fmessage-length=0 -MMD -MP -MF"src/pgm.d" -MT"src/pgm.d" -o "src/pgm.o" "../src/pgm.c"所以我不确定错误的来源是什么.我不做什么?

uli*_*tko 8

您的-lm选项不起作用,因为它需要遵循命令行上的输入源:

它在您编写此选项的命令中有所不同; 链接器按照指定的顺序搜索和处理库和目标文件.因此,在文件之后但之前foo.o -lz bar.o搜索库.如果引用函数,则可能无法加载这些函数.zfoo.obar.obar.oz

第一个pow(2.0,7.0)可行,因为它被编译器评估为常量表达式,并且pow在运行时不需要.


nul*_*ptr 7

放到-lm命令行的末尾.

  • 在`Build - > Settings - > Linker - > Libraries`中添加`m`有帮助吗? (2认同)