Linuxは、開発環境が40年前と同レベル (819レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
55: 2018/03/15(木)10:44 ID:lnWZyj3L(1/14) AAS
えっ!?

外部リンク[html]:www.jaist.ac.jp

>autoconf/automakeのバージョンを少し上げただけで、 それまでに作成した
>configure.inに対してautoconf/automakeを実行すると エラーや警告を生じる
>ようになる場合が多々あります。 むやみに最新バージョンをインストールし
>ないほうがよいようです。

>以降の記述でも、autoconf/automakeのバージョンによってはエラーや警告
省1
56
(1): 2018/03/15(木)10:52 ID:lnWZyj3L(2/14) AAS
どっちの関数があるかないかによって、自分のコードにこんなの書かされる。
片方の環境しかなければ、もう片方のテストはしないってことだよね。

#ifdef HAVE_GETCWD
  getcwd(pathname, sizeof(pathname));
#else
#  ifdef HAVE_GETWD
  getwd(pathname);
省4
57
(3): 2018/03/15(木)11:03 ID:lnWZyj3L(3/14) AAS
例えば、マクロ名を間違って、

#ifdef HAVE_GETCVD
#ifdef _HAVE_GETCWD
#ifdef HAVE_GET_CWD
#ifdef HAVE_GTECWD
#ifdef HAVE_GETCW

などと書いてしまったらどうなるか。このようなミスは、ヒューマンエラーなので、
省15
59
(1): 2018/03/15(木)14:49 ID:lnWZyj3L(4/14) AAS
>>58
頭の言いプログラマなら、別の方法を探す。
馬鹿だからその「解」が見つからない。
61: 2018/03/15(木)15:07 ID:lnWZyj3L(5/14) AAS
>>60
1つの方法としては、新規に共通(互換)ライブラリを作れば良い。

上の例だと最も単純には、

1. getcwd(pathname, sizeof(pathname));
2. getwd(pathname);

の「1」の方はアプリ・プログラムでは使わずに、必ず2を使うようにする。
そして2が存在しない環境向けには、
省10
63
(1): 2018/03/15(木)15:25 ID:lnWZyj3L(6/14) AAS
>>62
シンボル名の「衝突」と言っても色々な場合があり、一概には言えないが、
新しい共通ライブラリ関数は、例えば
cmn_getwd()
のように先頭に 「cmn_」を付けてしまって、アプリは、「cmn_xxx」の
方だけを使うようにすれば、衝突の心配が1つ消える。
65
(3): 2018/03/15(木)16:15 ID:lnWZyj3L(7/14) AAS
>>64

それは色々なやり方があるが、2つだけ書いておく:
1. そのライブラリのソースだけは、プラットフォームごとに場合分けしてしまう。
2. 何らかのツールで、関数ごとに使えるかどうかチェックし、1,0のフラグを
  マクロに設定するヘッダフィルを作成し、そのマクロで#ifdefで場合分けする。

どちらの方法でも、ライブラリだけを誰かが集中的に徹底的にテストとバグ取りして、
ライブラリを作る人だけは、全プラットフォームでテストを徹底的にしさえすれば、
省1
67
(1): 2018/03/15(木)16:37 ID:lnWZyj3L(8/14) AAS
>>66
だったら、プリプロセッサを改良すれば良いよ。
69: 2018/03/15(木)17:00 ID:lnWZyj3L(9/14) AAS
>>68
>プリプロセッサが改良できるならあなたが最初に上げた問題点も解決するのでは?

いや、それだけだと「>>57」の前半の問題は解決するが、後半の問題は残る。

>>65の方法を使えば、両方の問題を解決できる。モジュール別テストは強力だから。
70: 2018/03/15(木)17:04 ID:lnWZyj3L(10/14) AAS
>>68
>具体的に改良点も挙げずに言われても無意味ですし

>>57の前半の問題を根本的に解決したければ、gccの前処理(プリプロセス)部分
に独自の前処理指令を追加すれば良い。

ただ、そこまでしなくても、>>65の方法のようにすれば、モジュール別テストの効果で
非常に安定なプログラムを作り得る。
72
(1): 2018/03/15(木)17:20 ID:lnWZyj3L(11/14) AAS
>>71
一応、何度も「衝突回避」と書いてあるけど、「関数が定義されているか
どうかによる場合分け」みたいなことだよね。

その部分だけは、何らかのツールを使えばよい。最も単純な物でよければ、シェル
スクリプトでもいける。コンパイラ処理系によって違ってくるが、使うライブラリ
全てについて、ライブラリアンやリンカなどでexport symbolの一覧を出して、
関数名(シンボル名)が出力されるかを調べれば良い。それは、
省3
73: 2018/03/15(木)17:23 ID:lnWZyj3L(12/14) AAS
スマンが、用事があるのでしばらく抜ける。
76: 2018/03/15(木)17:37 ID:lnWZyj3L(13/14) AAS
いや、実際に上司などからも、滅多にいない最高レベルのプログラマだと評されていたの
でそれはない。
77: 2018/03/15(木)17:38 ID:lnWZyj3L(14/14) AAS
さらにいえば、昔から神童だと言われてきた。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s