【发布时间】:2023-03-20 22:59:01
【问题描述】:
既然c++标准库做了外部链接,为什么不返回重复函数定义的错误。
这不应该是函数重载,因为它是 double(double,double) 类型,与 math.h 中定义的 pow 完全相同
#include <iostream>
#include <math.h>
double pow(double base, double exponent) {
return 1;
}
int main() {
std::cout << pow(2, 2);
}
【问题讨论】:
-
违反一个定义规则是一种未定义的行为。
-
#include <math.h>打印1ideone.com/DxFDyK 和#include <cmath>打印4ideone.com/RrG2nw -
在我的 libstdc++ 版本中,只有
long double pow(long double, long double)和float pow(float, float)。这些确实会导致重新定义错误 -
@underscore_d 我想是的
标签: c++ c++-standard-library linkage