2012-04-16 42 views
8

Tôi có một codepad.'tham chiếu không xác định đối với' pow '' là gì

On line 15 bên trong một cho chức năng

for(i=2; i<=90; i+=2){ 
    int j=0+i; 
    printf("%i\n",i); 
    power=pow(inp,j); 
    factor=factorial(i); 
    if(i%4==0)fAns += power/factor; 
    else fAns -= power/factor; 
    } 

dòng power=pow(inp,j); tôi thêm j thay vì chỉ sử dụng i vì nó đã cho tôi những lỗi tương tự. undefined reference to 'pow'.

Nếu tôi thay thế j bằng 2, thì nó hoạt động tốt nhưng khi tôi sử dụng j=i nó sẽ không hoạt động. Có vấn đề gì với việc tăng dòng này không?

Tôi muốn điều này tăng lên và không ném cho tôi lỗi.

+1

Gcc là gian lận :) Xem [this] (https://gcc.gnu.org/gcc-4.3/changes.html#mpfropts) – Deqing

Trả lời

20

Bạn cần liên kết với thư viện toán học. Với gcc, điều này có nghĩa là đi qua -lm trong khi liên kết.

Lý do không khiếu nại khi bạn sử dụng 2 vì giá trị số mũ là do trình biên dịch đang tối ưu hóa cuộc gọi pow.

+0

Huh. 'Gcc' có thực sự thực hiện tối ưu hóa đó không? Đó là hoang dã. –

+0

@ ErnestFriedman-Hill Có nó tối ưu hóa cho 'inp * inp' – Paulpro

+0

Câu trả lời hay của WoW, sẽ không mong đợi nó tối ưu hóa cuộc gọi – Lefteris

Các vấn đề liên quan