動的ライブラリに既に存在する関数を再定義しても、コンパイルおよびリンク エラーがスローされないのはなぜですか?
以下の関数で
#include "calc_mean.h"
#include <stdio.h>
int mean(int t, int v) {
return 0;
}
int main () {
int theMean = mean(3,6);
printf("\n %d\n",theMean);
}
共有ライブラリ内 平均関数の定義は、以下のように既に存在します。
#include <stdio.h>
#include "calc_mean.h"
int mean(int a, int b) {
return (a+b)/2;
}
mean 関数の定義は共有ライブラリに既に存在しますlibmean.so
。しかし、コンパイル中に再定義エラーは表示されず、コンパイルは成功しました。
そして、実行が成功すると、私が見るo / pは4ではなく0であるため、共有ライブラリ内の平均の関数定義は実行されませんが、メインモジュール内の関数定義は実行されます。
どうしてこうなった?