|
こんにちは、はじめましてTOMです。 初級アマチュアプログラマーです。 ちょっと自分で解決できなかったので質問を聞いてください。 ・モジュールAに、ライブラリlib30.soをリンクしています。 ・モジュールBに、ライブラリlib40.soをリンクしています。 ・さらに、ライブラリlib40.soの中で、ライブラリlib30.soの中の関数Func09が 使用されています。 ライブラリlib30.soの中の関数Func09が修正されました。 再コンパイル、再リンクは、 全て(モジュールA・モジュールB・lib30.so・lib40.so) 行わなければならないのでしょうか? よろしくおねがいします。 |
|
>>2175 TOM Func09 の引数の数や、引数の型、戻り値の型を変更しましたか? また、Func09 から他の部分のグローバル変数を参照するところ を変更しましたか? いずれの変更もしてないなら、ライブラリ利用側の再コンパイル・ 再リンクは不要です。 引数や戻り値を変えた (=インタフェースを変えた) なら、 再コンパイル・再リンクのし忘れを防ぐため、メジャー番号を lib30.so.1 -> lib30.so.2 などと上げた方がよいでしょう。 >2174 >> 一致しているなら jcode::convert は必要ありません。 > 必要ないということは,あってもいいのでしょうか。 あってもよいです。僕は必ず jcode::convert は付けます。 > つまりeucをeucにコンバートする処理をしても問題はないんですよね? 本来問題ないのですが、Shift_JIS の半角カナと EUC-JP を正確に 判別することはできないので、EUC-JP な半角カナを Shift_JIS の 文字列だと誤認してしまい、EUC-JP に変換しようとする、ということは あります。 一応 jcode.pl がエンコーディングを自動判別する際は、「Shift_JIS と して解釈できる部分の長さ」と「EUC-JP として解釈できる部分の長さ」を 比較して長さが長い方を採用しますが、もちろんこれでも完璧では ありません。 # たしか両方の長さが一致したら、EUC-JP とみなされたと思う。 > 必要がないのにスライスを使っていたことになるわけですね。 いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 perl がおせっかいなので @a[0] -> $a[0] という読み替えをしている だけです。 % perl -we '@a=(100,200);print "@a[0]\n"' Scalar value @a[0] better written as $a[0] at -e line 1. 100 >>2171 スナフキン > ところで、最近JAVAに嵌まっているようですが、JAVAはJavaScriptと > perlとどちらに近い印象でしょうか?>68userさん うーん、どっちも遠いですねぇ…。でもまぁ僕がやってるのは サーバサイドの方なので、どちらかと言えば perl ですか。 でも、perl とは似てないですね。 とにかくクラス設計が楽しいです。 |
|
すいませんでした。 以後気を付けます。。 |
|
はじめまして。 ネットワーク関係の関数でちょっと質問なのですが。 inet_aton(hostname)になっていますがこれをinet_aton (ipaddres) にしても問題はないのでしょうか? hostnameが解決されていない場合、IPアドレスをそのまま 使用してみたのですが表面上問題はでていませんが、 内部的にどうかまで分からなかったので。 どなたか教えて下さい。 分かり難い内容の書き込みになってすみません。 |
|
>>2176 68user > # たしか両方の長さが一致したら、EUC-JP とみなされたと思う。 一致した場合は undef では? > いいえ、@a[0] はスライスを使っているわけではありません (よね?)。 > perl がおせっかいなので @a[0] -> $a[0] という読み替えをしている > だけです。 http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html を読んだうえでの僕の解釈は @a[0] はスライスです。 但し, 要素数が 1 のリストであり, スカラー値ではありません。 たまたま @a[0] をスカラーで評価したときに, その最後の要素である $a[0] が返されただけです。 となるのですが 例によって勘違いしている可能性大です。 |
|
>>217668user 68userさん インターフェイスの変更は、ありませんので ライブラリ利用側を再コンパイル・再リンクせずに利用できました。 回答ありがとうございました。 |