2分C++で書いているけど、Cのソースコードを読み込みたいときがある。'a()'というエラーになってしまう。調べてみると、C++コンパイラは、マングル(mangle)と呼ばれる仕組みがあり、オーバーロードの実現のためなどに、引数の型やクラス・名前空間名を使って修飾された一意の名前を作成して、引き当てに使っているらしい。Cコンパイラはマングリングしないため、マングル前の素の名前になっている。それで引き当てに失敗してしまうということだ。対策としては、C++コンパイラに対して、Cの関数であることを明示し、マングリングしないようにさせる必要がある。そのためには、以下のようにするだけで、Cのソースコードを利用できるようになる。地図を扱っていると、2点間の距離を計算することがよくある。平面上での2点間の距離は、学生時代に数学で習った式で計算することができる。それでは正確な距離とは言えない。地球の丸みを考慮した距離を計算したいときにはどうすればよいか。方法はたくさんあるが、最も簡単でそれなりの精度が計算できる、ヒュベニ(Hubeny)の公式を用いることが多い。詳細な計算式や概念は他のサイトを探せばたくさん見つかるためここでは割愛させていただく。以下のサイトはとても分かりやすい。私はC++を使っているため、C++でHubenyクラスを作成した。HUBENY_H使い方は簡単である。std::endl;計算すると以下の値となり、参考サイトと同じ値となった。an:57.678今度時間があればヒュベニ(Hubeny)以外の計算も試してみたいところ。