UNIXプログラマの為のWindows入門
いつも、Solaris,HP-UX,FreeBSD等でプログラムを作っています。
最近、業務上、どうしてもWindows上でのプログラムを作らなくては
いけない状況になりつつあります。
UNIXに慣れてしまったこの体、なんでいまさらWindowsって感じですが、
ここは一発、頑張りましょう。
って事で、UNIXプログラマの為の、Windowsプログラミングの手引き
のようなスレです。
UNIXの良き伝統に則り、みんなで知識を共有しませんか?
あくまでUNIX文化圏の発想を持ったままWindowsプログラミングを探検
するならいいネタじゃない?
とりあえず漏れのWindows体験。仕事上VBでプログラム作らなきゃいけ
なくなってCOMを触ってたんだけど、Collectionオブジェクトの実体が
さっぱり分からず気持悪い思いをした。ヘルプ見ても非プログラマ向け
の説明をタライ回しで読まされるだけだった。
IDLかC++のヘッダが見てえ! でも必死でGoogleしても見つからねえ!
こんな時UNIXなら「分からない事はソースに聞け」で解決なのに!
って感じで地獄でした。陸に上がった魚の気分。
何を探せばよかったですか? WindowsっていうOSの根本思想というか、設計思想、アーキテクチャって
なんなんでしょう?
UNIXって、とりあえず、ファイル。
何をするにも、ファイル、ioctl ってイメージがあるんだけど。
あと、なんであんなにプログラム作るのが複雑なんだろう。
Visualなツール使ってみんなプログラム作ってるけど、
Visualなツールが自動的にやってることって、みんな理解してるのかな?
わたし、サパリわからないです。
>5
MS Winつまりマイクロソフトが儲かる為のOS VBに至っては、何がどうなってるのかサパリわからんです。
大体、main はどこ?って感じです。
VCだと、最初にプロジェクトを選択するじゃないですか。
んでもって、なんちゃらーってプロジェクトを選ぶと、テンプレート
が作成されますよね。
なんじゃコリャって感じなんです。
winの統合開発環境は良いよなあ。。
KdeveloperやKylixのおもちゃみたいな出来をなんとかしろ >>8
それは確かに正論です。
でも、これからWindowsを無視しては食っていけないと、危機感をもっています。
といっても、身についたUNIX的考えかたって、悪くはないと思うんです。
いかにして、発想の転換を行えばいいのか。(UNIX->Windows)
これが、問題です。(私にとってはね。) Delphiが良いですよ。わかりやすくて。
MSの余計で汚い部分はuses節で見えませんし、Visualとの関連もわかりやすいです。
linuxに逆に移植できるし。
>10
私も、あの統合環境は良く出来てると思います。
その反面、あの環境でないとプログラムを作れない自分にいらだちます。 >>5
とりあえず「何でもオブジェクト(コンポーネント)」じゃないかな。オ
ブジェクト指向マンセ-の漏れとしては、その点はうらやましい。この辺の
事情は「Rubyを256倍使うための本 邪道編」が参考になる。 Windowsのプログラミングの肝って、Win32APIじゃないんでしょうか?
いわゆる、UNIXでいうシステムコール。
まず、システムコールを通して、OSの作りや、動作を理解していく。
それが出来て初めて、そのOSに合ったプログラムが作れる。
と思っているのですが。 >>15
今のWindowsはWin32 APIを包み隠す方向に進んでるように見える(外か
らは)。.NET時代には邪魔な存在だろうし、オブジェクト指向の世界と
馴染まないよね。>Win32 API Visualのほうは、オブジェクトがWin32APIに包まれて隠れているので気にしなくても良いのでは?
必要なときだけ呼び出せば作れる。
問題なのはMSのバグがオブジェクトに隠れているのできちんと動いてくれないことが多いところ。 >14
MFCとかの本を読んでると、なんとなくオブジェクトのイメージが
沸いてくるのですが、Win32APIの本を読んでるとオブジェクト指向的な
考えが全く感じられません。
私って、逝ってよし? (正)Win32APIがオブジェクトに包まれて隠れているので >>18
単純に、先に存在していた古くて汚いWin32 APIを後の時代にオブジェ
クトの皮で隠蔽しただけだと思うよ。だからMSはWin32 APIを消したい
と思ってると思うんだけど。個人的に。 とりあえず、.NETを用意してくれたんだから、
Win32APIやMFCのことは忘れようぜ。
そんなもんこれからやるのは馬鹿らしい。
まぁ適当に関わっていくならいいかもしれないけどね。 >17
そこなんですよ。
現在のUNIXって、統一的なオブジェクト指向なIFってないですよね。
(いわゆるクラスライブラリっていうのかな。)
OSへのIFがクラスの中に閉じ込められてるのが許せないってのがそもそもの間違い
なのかな? >>22
> OSへのIFがクラスの中に閉じ込められてる
これどういう意味? ちとわかんない。 >>23
ああごめん、Win32 APIがMFCに閉じ込められてるって事か。その上の文
のUNIXの話の続きだと思った。 今後のMSの方針を考えると、Win32APIを直接使うプログラムは、
推奨しないということになっていくのでしょうか? そこら辺は諦めましょう。慣れだと思います。たかがWINDOWSなんですから。
私みたいなやつが多いから、こんな糞OSをみんな使わざるをえないのはしゃくですが >>21
まだ、Windowsのプログラムを作り始めて数ヶ月です。
不勉強で申し訳ないのですが、.NETってなんですか?
もちろん、言葉は聞いたことがあるのですが、イメージが
全くつかめません。
イメージだけで結構です。教えていただけませんか?
では、「UNIXプログラマが新しめのオブジェクト指向環境でWindowsプ
ログラミングする話」にしちゃってOK? >>27
ごくおおざっぱにいえばJavaのMicrosoftふう実装 >>28
OKです。
UNIXプログラマがWindowsでプログラムを作らざるをえなくなったとき、
どういう風に今までの考え方を変化させていかなければいけないか、
という部分について議論できれば最高です。 >>29
Javaというと、
プラットフォームに依存しない。
というイメージが一番強いのですが...
>>31
いちおう他プラットフォームへの移植も
検討されてますが何か? でも仕様を決めるのはMicrosoft だよな。当然ながら。
>>30
んじゃ遠慮なく。
まず変わらざるをえないのが情報の探し方だよね。
UNIXの場合はソースという一次情報源があって、正確な情報が知りたけ
ればソースを読むって手が使える。楽に済ませる場合はドキュメントや
MLの情報をあさるけど、真実が知りたきゃソースを読むしかない。後は
信憑性と時間コストのトレードオフでどの情報源を使うか決めるだけ。
でもWindowsプログラミングでは大抵のソースは読めない。MSのドキュ
メントや一般開発者のメモ等の二次情報をあさったり、ブラックボック
スをいじり回す事になる。
UNIXのソースに相当するような信頼性の高い情報はどうやって得たらい
いのか? ってのが俺の課題かな。 かーごめかごめ かーごのなーかのとーりーはー いーついーつーでーやーるー
STABLEじゃないと思うぞ.NET
しかもOPENSOURCEでも、「常識ですね」でもない世界。
あの環境の呪縛から逃げるには、やっぱWin32APIしかないと思うのだが。
>>35
もう無理だよ。やるっていってるんだから
普及させるんだろ。それにそれほど悪いものでも
ないと思うんだが。 >>36
う〜ん だってあれってj2ee+CORBAでもなんとかなっちゃいそうなんだもん
MSの通信系ってDOSの頃から信用してねーもん >>34
MSにお布施しまくって常に最新のMSDNとかMSJとかを読みまくる。
位しかないんじゃない?
俺なんかも含め、びんぼー人は
>MSのドキュメントや一般開発者のメモ等の二次情報をあさったり、ブラック
>ボックスをいじり回す事になる。
しかないと思うけど。
# だから中途半端な金持ちはMSまんせーになりがちなのかね あ、最後の1行が意味不明だった。
まんせーっていうか質問しても「MSDN見ればいいんじゃないですか?」
しか言わないやなやろーが多い(と思う)ってことで。
まぁhelpはPlatform SDK落とせばいいだけだけど、MSJに載ってる
ような技術資料は会員にならないと見れないし。 >>34
Windowsプログラミングの場合、その2次情報が多いし。
いいんじゃない?
ソースが常にある環境は確かにうらやましいけど
最終的にソースに 頼る のはプログラマとしては
前時代的で長い目で見た場合の効率はよくないと思ってる。
だって、何のためのドキュメントなのよ。
man ls が信用ならないからってソースを見る人もいないしね。 >>41
ごめん・・・みてたm(_ _)m < lsのソース
>41
そのドキュメントが信頼置けんからな…
バージョンによる挙動の違いをMSDNからは読み取れないと思うけど?
# immとかwininetとか悲惨の一言。使う奴が馬鹿だって? そりゃないよ…
>>41
ls(とも限らないが)の結果の間違いが致命的なら、ソースを見ると思う。
>>34の言うとおり、トレードオフでしょ。 >>43
そうなると信用できそうなのはlibcとWin32APIくらいになっちまうのよな。
(ん?Windowsではlibcっていわずに標準Cライブラリって呼ばんといかんかったか) >>42
あーおれも見たことあるや。すまん。
標準出力とリダイレクトの動作の違いがマニュアルから読み取れなくて・・・ だいたいUNIX系のはマニュアルがしょぼい。
「ボランティアで書いてんだからしょーがねーだろ」
「これで判らなかったらソース見ろバーカ」
っていう態度がありありと見てとれて、むかつく。 >47
MSDNに金払ったところで、この内容で判るかボケって感じだよな。
結局動かしてみて挙動を追うしかない、ソースがあるとないとでは大違い。 MFC使ってみようと思ってMSDNのドキュメントとか読んだが、
結局わからなくてソースを読んだ。
マニュアルがあるに越したことはないが、
やはり最後はソースだと。 ソースがあっても、果たして理解できるんだろうか?
> Windows
だいたい、Win32APIって何種類ぐらいあるんだろ?
どんどん増えていってるのか?もしかして。
あと、INVALID_SOCKETはやめれ。
ソケットIFぐらい周りとあわせろ。 >>50
みんなcodeguruあたりから適当にコピペしてるんですよ。
>>51
構わず -1 使ってますが何か?
というか むしろ WSA 系の方を使ってほしいんでは。
>>56
Win32プログラムの基本的な構造は今も変わっていないから
これから始めるのなら一読の価値あり。 56>>57 んじゃ勿体無いので読みます。しかし分厚いから読みにくいんだなこれが。 >>58
読んでおくべきなのは頭から1/3ぐらいまで。
後は必要に応じて拾い読み。
今の版は2分冊になっているから、読みにくかったらそっちを買えば
少しは薄くなって読みやすくなるんでない? (藁 > ソースがあっても、果たして理解できるんだろうか?
> > Windows
普通無理だな。
Windows向けのCのソース見てると混乱する。
お前どこからでてきたねん! って感じで。
UNIXでのプログラミングに比べて数段難しい。
多分GUIはWinの方が楽なんだろうけど。 >>54
-1 で、ちゃんと動いてる?
Winsock1.1使って、VC++でDLL作って、それを
VBから使ってたんです。
ずーっと動かしてるとだんだん重ーくなってくるんよ。
何回も、何回も、繋いで、切ってってやってるとね。
んで、-1 やめたら、なんか直ったみたい。
VC++の起動時のTipsで
「VC++はVC++で開発されました」
と書いてあったんだけど「だから何?」と思った
というか最初のVC++はMS-Cで書いたと思われた
あまりにもUNIXから離れたのでsage
>63
DelphiもObjective PascalだしJbuilderもJavaで開発されてますな。
あ、どっちも IDEだけだけど。
ほんとにどうでもいい話だが。
ところで皆さん、ハンガリー記法ってどうですか?
変数名のプレフィクスに i だの lp だのと型名をつけるやつ。
漏れは覚えたのがWindows→UNIXだったもんで、ついUNIXでも
ハンガリー記法で書いてしまうですよ・・・鬱。
でもって、他のソース読むときも「変数名にプレフィクスつけて
くれないかな」と思ってしまう始末。
すっかりシモニーたんに支配されてます。うぅ・・・ (´-`).。oO(きっとSoftware Designを読んだのだろう) 漏れは、最近Windowsプログラマーから、UNIXプログラマに転向した。
正直言って、カルチャーショックだね。
UNIXのシステムコールの少なさに唖然。
Win32APIなんか1000個くらいあるが、漏れほぼ全部わかる。でも人生の無駄だった。
ネットワーク系のプログラムや、サービス(デーモン)のプログラムなんか、Windowsはめちゃ難しくて手間がかかる。
そんなにUNIX詳しくないので、えらそーなことは言えんが、
システムコールやライブラリレベルで、Windowsが明らかに勝っているのは、
ACL, SAM, ファイルロックくらいかな。
それ以外は、UNIXマンセーだね。
WindowsでSTLなんて使おうとしたら、ブービートラップがいっぱい。
正直、WindowsでSTLは使いものにならない上に、意図的に隠されている。
MFCのCStringクラスや、CArrayクラスなんか、STLを覚えた今の頭で考えると、もう最悪。
今では、STLを隠されていたいたことに怒り爆裂だ。
>>67
スレッド周りもWin32の方が扱いやすいと思うなぁ。
mutex, semaphore, eventいずれも区別無しでWaitFor〜()で待ち合わせ
できるし。socket descriptorがハブにされてるのはアホだけど。 >>67
というかそれはWindowsの問題ではなくVC++の問題だと思う
>>69
STL云々って部分はね
しかしMFCのコンテナなんかは、わざと使いにくくしたとしか
思えないよなー
Win32APIのなかには概要を覚えたつもりでも恐ろしい罠が
待ち受けていたり、構造体がしこたま必要だったりするので....
>>68
Win32のスレッド周りは、APIとTLSとCランタイムの関係がよろしくないのが問題。
あれで、どつぼにはまる人多数。
MSは、Cランタイムを駆逐して、全てAPIや.NETにしようとしている。
>>69
その通り。でも現実問題として、通常用途のお仕事用はVC++しか無いし・・・ >>71
まぁ確かにmsvcrt.dll使う場合は_beginthreadex()使えだの、MFC使う
場合はAfxBeginThread()使えだのややこしいけど、それぞれのライブラリ
内で使ってるTLS初期化用にそれらを使わなきゃいかんのねぇ、ってのが
理解できれば(実装が汚いというのは置いとけば)別にどうって事ないと思う
けど。他になんか問題あるっけ?
>MSは、Cランタイムを駆逐して、全てAPIや.NETにしようとしている。
Unixだって昔からいろんなライブラリあるけどね。
ただ、Winの場合設定がレジストリだし、ログ出力もイベントログにAPIで
通知だしで、「APIが無いと非常にいじりにくい」ってだけでしょ。 >「APIが無いと非常にいじりにくい」ってだけでしょ。
ごめん。「だけでしょ」ってのは撤回。
COM関係だと「API使わないといじりようがない」もんね。 横入りスマソ。TLSって何?
ググってみたらThread-Level Speculationってのが引っかかったけど話の流れ的に違いそう。
Thread Level Stateか何か? >>72
ヤヴァいAPIやAfx関数なんか使うとスレッドの解放時に、
スタック領域が残ったりすると思われ
漏れの場合は長ったらしいAPIを呼びまくってる中に
ふとC標準ライブラリのコールを見ると、場違いな気がしてくる
ラスベガスで寿司屋を見つけたような。
>>74
Thread Local Storage。
>>74
TLSは「スレッド毎に別々の値を保持できるグローバル変数」というとイメージ
しやすいかな。APIとしてTLSAlloc()なんか使う方法もあるけど、VC++だと
コンパイラサポートがあるので、本当にグローバル変数そのものをTLSとして
定義できちゃう。
まぁ俺は普通スレッド毎の管理/ワーク領域作って親スレッドで一括管理する
ように作るんで、自分でTLS操作した事もVC++のTLSサポートも直接使った事
は無いけど。
>>75
スタックが残るようなのってTerminateThread()とかでしょ?
これは最初から「そういうもんだから最終手段としてしか使うな」ってヘルプ
に書いてあるんだから、使う方が悪いつーか。
デザインとしてなんかダサいってのは分かるけど。 アピ━━━━━━━(゚∀゚)━━━━━ !!!!! >>73
Windows は、そもそもシステムコール相当の「カーネルへのエントリ
ポイント」(Windows NT 系列だと NTDLL.DLL あたりに書いてある)
は非公開だから、API を使わんことにはどうにもならんよね。
どっちが優れてるって話じゃなく、単に文化の違いだと思うけど。
>>78
UNIX というか POSIX Thread だと、TLS 相当の機能は pthread_getspecific()
を使って書くよね。VC++ のようにコンパイラのサポートがないから、さすがに
グローバル変数を勝手に TLS に割り当て、なんつー真似はできんけど。 UNIXからrcpでWindows2000からコピーしたいのですが、あれってリソースキットを
入れるだけで動くかご存知ないでしょうか?
あ〜.hostsもありますねぇ。 まずVMSを徹底的に勉強する。
次にホイールマウスの使い方を覚える。
そしてWindowsUpdateを実行する。 おおう、一年ぶり。
>>1 は見事にWindows プログラマになり切れたのだろうか?
それとも、いつの間にか古巣に戻って来てしまったのか?
まぁ、このスレの閑散ぶりからすると、戻れない河を渡ってしまったんだろうな。
さらば、 >>1 >>97
裏切者め地獄の業火に投げ込まれるてしまえ
/\___/ヽ
/ノヽ ヽ、
/ ⌒''ヽ,,,)ii(,,,r'''''' :::ヘ
| ン(○),ン <、(○)<::| |`ヽ、
| `⌒,,ノ(、_, )ヽ⌒´ ::l |::::ヽl
. ヽ ヽ il´トェェェイ`li r ;/ .|:::::i |
/ヽ !l |,r-r-| l! /ヽ |:::::l |
/ |^|ヽ、 `ニニ´一/| ^|`,r-|:
>>100
Yahoo BB HIKARI にしろよ・・・マジお薦め。 >>101
こんな見えないところでわざわざ工作ご苦労様 こちとら生粋のWindowsプログラマー!
だがWin32APIを直接呼んだことなんて一切無ぇとくらあっ! Windowsは歴史に無頓着なものかもしれないけど、
でも設計的にはUNIXを綺麗にまとめたものだったりしない?
カーネルオブジェクトと概念をひとまとめにしてある辺りは、
アプリケーションプログラマの頭の負担も少ないと思う。 でもまあ一見して概念的に綺麗になっているものこそ、
齟齬をきたしているケースも多々あるから一概には言えんか。 Win32 のシステムコールインターフェースは結構きれい。
というか、UNIX のものとほとんど変わらん。
CreateProcess 系は全然違うけど。Win32 は fork() を
使わないから、かなり複雑。ここはポリシーの違いなので、
どっちがいいとも言い難いけど。
Win32 の GUI 系のプリミティブ、特にイベント回りは、
Win16 との互換性のためにかなり汚い。まあメッセージ
クラッカーとか使えば隠蔽できるし、MFC 使ってれば
気づかないけどね。 きんたまウイルスでひっかかった東海○科につとめている人の
ファイル見たんだけど、エクセル、エクセル、エクセル。
ウインドウズってエクセルつかって、こうやってやれば
便利に使えるんだなぁ、ってすごい感心した。
#・・・製品の原価率とかにも。
#ある意味エロ画像よりすげぇ、ファイルだった。 >>106
1年半前のカキコにレスすんのもあれだが・・・
Win32のシステムコールはUNIX系のOSに比べてかなり数が多く複雑で
それがセキュリティの穴になっているのではないかという記事をどこかで
見たことがある。
システムコールの数はFreeBSDの場合は400足らずだが、Windowsの場合は
それの3倍以上はあるんだろうか?Wndowsのバージョンにもよるが非公開な
部分があるのでMSの開発者ぐらいしか正確な数を把握してないんだろうな。 >>109
ビスタになって少しはシステムコール整理されたりしたのかなぁ?
1.日立製作所社員の高野くん(高野光弘)が会社を誹謗中傷して機密も漏洩
2.日立のユーザーにも「キチガイ」との障害者差別発言
3.日立製作所の企業イメージをバキバキにする
4.自身のサイトの『32nd diary』に掲載
5.日立製作所に通報される
6.あせって似顔絵削除
7.火に油を注ぐだけで所属する日本UNIXユーザ会にも通報祭り勃発
8.「給料泥棒」と説教される
9.「殺します」と殺人予告をして警察に事情を聞かれる←イマココ
高野光弘の行動
現在は、過去の記事を閲覧できなくして、「本日の日記はツッコミ数の制限を越えています」としています。
まずは、不愉快な思いをされた方々に謝罪するべきなのではないでしょうか。
高野光弘の発言
「まぁ、どこの団体もそんなにヤワじゃないので、平気なんですけども。
日本UNIXユーザ会が一番対応に慣れてる感じ。」
日本UNIXユーザ会が対応に慣れているか、みなさん確認してみてください。
連絡先
http://www.net.intap.or.jp/oiia/cont2/p0402.html%7B0recid=10168.html 【話題】なぜ日本人は世界中でモテモテなのか!?日本人の魅力について外国人100人に聞いてみた【最強】
https://www.youtube.com/watch?v=P4UD7b6h2KM スレによっては国賊で創価員の工作員スパイが暗躍してみんさんを洗脳しようとしています。注意
こんなにある、創価員による破壊的狂気的犯行の数々。実際には新聞TVにのらないだけでもっとある!次はあなたの番だ
●宅間守(在日部落)→大阪 附属池田小学校児童殺傷 。大量殺人犯 創価学会員の犯行 両親も創価学会員
8人殺害 15人を殺傷。 朝鮮人部落出身。
●斉藤勇太→JR取手駅前バス無差別殺傷通り魔事件(取手バスジャック) 創価学会員の犯行
「通勤、通学客で混雑するバスの中で手加減せず無差別に襲っており、社会に大きな不安や衝撃を与えた結果は重大だ」
●酒鬼薔薇聖斗→ 東慎一郎(在日)神戸の首切り魔で酒鬼薔薇聖斗 神戸の首切り魔。生首を校門に飾る。2人殺害。創価学会員の犯行 大量殺人犯
●福田孝行(在日)→山口県母子強姦殺害 殺害後屍姦、乳児も殺害 大量殺人犯 創価学会員の犯行。裁判では屍姦は
生き返らせるための(創価流の)儀式だと供述 死刑判決
● 大芦明 →2011年 11月5日 大阪府堺市中区 隣人二名殺害事件。創価学会員の犯行 無期懲役
●八木茂 →埼玉・保険金殺人事件犯人 2名殺害(平成12年)死刑判決 創価学会員の犯行
●武まゆみ→、埼玉・保険金殺人事件犯人 2名殺害(平成12年)無期懲役 創価学会員の犯行
●森田考子→埼玉・保険金殺人事件犯人 2名殺害(平成12年)共犯者で懲役13〜15年の判決 創価学会員の犯行
●柏市連続通り魔殺傷事件X強盗殺人 創価学会員の犯行の犯行
●引寺利明 →マツダ宇品工場ファミリア暴走連続殺傷事件 引き殺しで1人死亡、11人を殺傷 創価学会員の犯行
●織原城二(金聖鐘) → ルーシー・ブラックマンさん事件 創価学会員の犯行 10人の女性に強姦又は強制わいせつ 内2人の女性が死亡
●山口芳寛 →熊本3才女児遺棄事件。レイプ 創価学会員の犯行。幼女に熱い視線、女児が大好き 強姦殺人無期懲役
●内柴正人→柔道金メダリスト(連続)強姦事件 (2009.5.15付 聖教新聞) 創価学会員の犯行
●アクリフーズ毒入り大量殺人事件 創価学会員の犯行
●リサイクルショップエース大量殺人事件 連続殺人!5人以上を殺して埋める 創価学会員の犯行 x^n+y^m=z^r 解は存在するか.だれも解けないといわれたビール予想
解けた方だけどうぞ
ttp://blog.livedoor.jp/superprojectx/archives/1030198512.html Windowsのプログラマってmakeファイル読めるのかな?
勝手に生成されるけど Where we’re going (in this #NatandLo episode about the Google Trekker) we don’t need roads → http://g.co/go/NLtrekker 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
DFTA0 >>117
nmakeはバリバリ手で書いてます
逆にunix界隈の、例えば(g)makeとか慣れてる人は戸惑うんじゃなかろうか ヒアドキュメントがmake自身の機能というのがunix系makeとnmakeのMakefileの見た目の印象の違いかな?
cmdがそれを欠いてたというのが理由なんじゃないかと個人的に思ってるけど…
unix系makeだと、shell = ksh系にすればヒアドキュメントが使えるので不要な機能
ドザーの使うシェルはpwsh、cmd、ヒアドキュメントをサポートしたりしなかったりするbsh族と多岐に渡るので、makeの方でシェル非依存にサポートされるヒアドキュメントはこれらの違いを吸収してくれる、皮肉な事に… vcの自動生成等もautoconfの黒魔術に比べればどうってことないよ