Trong đoạn mã bên dưới, tôi xác định hàm log
tầm thường. Trong main
Tôi thử không phải để gọi; Tôi gọi số std::log
. Tuy nhiên, riêng của tôi log
được gọi là; và tôi thấy "log!" trên màn hình. Có ai biết tại sao không? Tôi sử dụng G ++ 4.7 và clang ++ 3.2.Tại sao nhật ký của tôi trong không gian tên std?
#include <iostream>
#include <cmath>
double log(const double x) { std::cout << "log!\n"; return x; }
int main(int argc, char *argv[])
{
std::log(3.14);
return 0;
}
âm thanh như một lỗi biên dịch nghiêm trọng ... – MFH
tôi có thể tái sản xuất này trên g ++ 4.6 dưới Macports. Tuy nhiên, nó không xảy ra trong g ++ 4.2 hoặc 4.4. – carlosdc
http://codepad.org/Uwhgrv7q http://codepad.org/z07Ctfyn Frome hai tôi sẽ nói rằng hàm std :: log() gọi log().nhưng sau đó nó sẽ tạo ra một lỗi/cảnh báo rằng tập tin của bạn xác định lại nhật ký hoặc một cái gì đó như t – Gir