[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/26 14:12 / Filesize : 314 KB / Number-of Response : 1035
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 148



1 名前:デフォルトの名無しさん [2018/09/19(水) 17:56:50.83 ID:XSTNMnDwa.net]
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 147
mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

231 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:04:59.62 ID:JEmRy2N3M.net]
ただの木構造でわ?

232 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 22:36:13.96 ID:eFHr5qJjM.net]
>>223
自己レス
英語で検索したらみつかりました。

https://www.geeksforgeeks.org/print-all-permutations-of-a-string-with-duplicates-allowed-in-input-string/

233 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 23:35:26.40 ID:/Z9skFPV0.net]
>>225
普通はcarとcdrで再帰降下して、重複を取り除く為にアホみたいにN^2/2回比較して終わり。
この単純実装で十分だと思うけどね。メモリ食うけど。
そのサイトの実装は、速そうには見えないけど、メモリは食わないね。

234 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 11:39:13.66 ID:sI9HCV5SM.net]
>>226
再帰使ったコードどこかに落ちてない?
自分で書く能力ないので既成品で速度比較してみたい。

235 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 13:48:31.42 ID:4xZhtJ+zM.net]
自分で書いた方はえーわ
そして書けないってまずいわ
さらに自分で考えないってもっとまずいわ

236 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 19:20:45.10 ID:A0N9+kL10.net]
>>227
Cでその態度はグーで殴られるだろう。

なお225、再帰時に毎回sortして重複枝を刈れば、列挙後の比較は不要となりメモリは食わない。
ほぼ224と同じになるが、これが最速でもっとも簡素な気がする。
224は単純に全降下ではなくswapして降下先を選んでいるが、これの利点はよく分からん。

237 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 22:34:27.02 ID:4xZhtJ+zM.net]
>>226
carとcdrってCでも使う言葉なの?
最近scheme初めて知ったんだけど

238 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 22:37:06.69 ID:CZcrESgD0.net]
>>230
>carとcdrってCでも使う言葉なの?
あんまり聞かない…

239 名前:デフォルトの名無しさん [2018/09/25(火) 22:37:56.77 ID:Ig86RmNy0.net]
OSの体系的な質問で申し訳ないんですけど
VisualStudioで作ったC言語の計算アプリがあるんですけど
これはMacでも動くんでしょうか?
それともMacにいったんVisualStudioをインストールしないと駄目なんでしょうか?
聞くに、C言語は低級言語なので動かないOSはない、C言語自体が完全ネイティブ環境
だとも聞いたのですがどうでしょう?



240 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 22:42:03.59 ID:1135EyDF0.net]
コマンドラインで起動するコンソールアプリで
C言語の標準的関数しか使っていないなら
ほぼそのまま動かせると思いますが、
Windows固有のAPI使っている場合は
手直ししないと無理かと思います

241 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 22:42:10.10 ID:CZcrESgD0.net]
>>232
main() を定義しているファイルをここ
https://www.ideone.com
に晒してくだされば、判断いたしましょう

242 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 22:44:39.75 ID:fKl9B6Sya.net]
VS for Macとかコードの互換性あるんでねえの?
バイナリは別としてさ。

243 名前:デフォルトの名無しさん [2018/09/25(火) 22:50:44.42 ID:Ig86RmNy0.net]
>>233
うん???www
WindowsAPIってのはC言語で実装されてるから問題ないのでは?

244 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 22:54:26.26 ID:1135EyDF0.net]
WindowsAPI毎Macに移植するのであれば、動くかも知れませんね

245 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:06:10.30 ID:CZcrESgD0.net]
>>236
>WindowsAPIってのはC言語で実装されてる
win32api(≒WindowsAPI) は C から呼び出せるようになっているのではありますが、
win32api の実体が存在するかどうかは、また別の話になります
mac にて windows 向けのコードを実行させるための手段があるかどうかは、私にはよくわかりません
(wine とかが移植されているのですか?)

246 名前:デフォルトの名無しさん [2018/09/25(火) 23:09:30.90 ID:Ig86RmNy0.net]
>>238
WindowsAPIを書いてる言語はバイナリってことですか?

247 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:18:34.02 ID:HAbRzuEs0.net]
ソースコード全部をgithubに乗せれば話は早いです
要するに、現物を見るのが手っ取り早いです

248 名前:デフォルトの名無しさん [2018/09/25(火) 23:18:38.51 ID:SjmRGAva0.net]
CPU
OS
ソースコード
実行ファイル
ライブラリ
API
この辺の理解がごっちゃになってるな
もしくは釣り

249 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:23:33.73 ID:1135EyDF0.net]
試しに、VCではなく、GCCコンパイラ使って、
ソース修正せずに実行プログラムが作成出来るかな?



250 名前:デフォルトの名無しさん [2018/09/25(火) 23:37:13.97 ID:Ig86RmNy0.net]
>>241
釣りではないです
大学では
バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
の順番で言語規模が高性能化するって習いました

高級言語→C言語にするには実行環境が必要

251 名前:ナすが
そもそもC言語であるならば、OSが直接読み込める形であるのだから
どんなOSでも動くという理解です。

間違っていますか?

大学でしないといけないのはプログラミングではなく言語体系についての
理解をレポートにしなきゃならないので
[]
[ここ壊れてます]

252 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:41:58.98 ID:Jw6NGqaL0.net]
中学生が背伸びしてるのかと思ったが大学生かよ。

253 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:42:20.18 ID:AGUJmjmE0.net]
>大学では
>バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
>の順番で言語規模が高性能化するって習いました

どんな教育だよ...

254 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:46:38.07 ID:J8LSZpTD0.net]
>>243
その言語や環境の並び、ざっくりしすぎというか突っ込みどころ満載でどこから訂正していいか困るレベルだよ。
テキストや教師がもんだいなのか、君がの理解不足でおかしなまとめ方をしてるのか…

255 名前:デフォルトの名無しさん [2018/09/25(火) 23:46:38.88 ID:xp1IDT0a0.net]
訂正するのがめんどいぐらいいっぱいまちがってる

256 名前:デフォルトの名無しさん [2018/09/25(火) 23:53:43.26 ID:Ig86RmNy0.net]
>>247
どこらへんが間違ってますか?
間違いは財産です。教えてください。

257 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:54:12.64 ID:HAbRzuEs0.net]
>C言語であるならば、OSが直接読み込める形であるのだから
>どんなOSでも動く

しゅごい

258 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:55:06.09 ID:AGUJmjmE0.net]
>高級言語→C言語にするには実行環境が必要ですが
「そもそもC言語であるならば、OSが直接読み込める形であるのだから
>どんなOSでも動くという理解です。

C言語は各マシンそれぞれのCPUやOSに対応した適切なコンパイラとAPIでコンパイルしないと動きません。

259 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 23:57:02.58 ID:J8LSZpTD0.net]
>>243
まったく自分でプログラミングしてないなら実感沸かなくて当然なのだろうけど、その課題意味あるのかな。

それはともかく。
Cで書いたプログラムならどのOSでも 動く訳ではない。
Cで書かれたコードはOSぎ直接理解できるわけではない。そこでCのコードをOS上で実行できるコード(君の分類ではバイナリ)に変換する作業がいる。
その際、ターゲットとするCPUに合わせたコードに変換するから、違う種類のCPUの環境では動かない。
また、OSに関する機能は全部を自分の生成するプログラムに内包する訳ではなくて、OS側ですでに用意してあるプログラムを呼び出すだけだから、他のOSに自分のプログラムを持っていったら、呼び出す先のプログラムが存在しないので実行できないことになる。



260 名前:デフォルトの名無しさん [2018/09/25(火) 23:58:21.66 ID:Ig86RmNy0.net]
>>250
正しいのでしょうがよく分かりません
C言語のほうが低級なのに、高級のWinAPIでコンパイルするんですか?
矛盾してるような…
WinAPIはコンパイルされる側のような…

261 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:02:36.99 ID:HESLqYz40.net]
>>252
前提の理解が間違っているというか、APIが何者かまったくわかっていないよね。

winAPIはwindowsが予め用意してくれている機能で、一般のプログラマがコンパイルするものではない。
自分のプログラムをコンパイルするときに、くっ付けて使わせてもらうもの。

262 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:03:04.81 ID:h9A6ffHl0.net]
WindowsAPIはAPIであってプログラミング言語ではないので言語的な高級度は定義できません。

263 名前:デフォルトの名無しさん [2018/09/26(水) 00:05:27.24 ID:I4Gvy1+q0.net]
すいませんまったく理解できなくてすいません
低級言語っていうのは、できることは単純だが速度が速いという認識です。
バイナリになると一切無駄が無いので実質、最速の言語だということも知っています。
APIという高度な機能をもってC言語をコンパイルするというのがなぞすぎます。
すでに単純な命令を何故コンパイルという時間のかかる処理を施すのでしょうか?

264 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:06:52.76 ID:HY3LojxY0.net]
>>243
> 大学では
お前の大学の講義資料のURLを晒せ。
今時の大学なら(学外から見えるかはさておき)普通は上げてるだろ。

おかしいのがお前の頭か講義資料か先生かは切り分け出来る。

265 名前:デフォルトの名無しさん [2018/09/26(水) 00:08:13.65 ID:nZ7x0XR+0.net]
まずいまどきアセンブラなんか手書きでなんか書かない
C言語をコンパイルするとアセンブルしてしてアセンブラをコンパイルする


266 名前:驍ニ実行モジュールができる(コレがチミがバイナリと読んでるものになる)

WinAPIやDirectX APIはOSが提供するアプリケーションインターフェースになる
それをさっき書いたC言語から利用することができる

で、C言語に限定されないが、そういった開発を
知恵遅れでもできる環境を提供するのがIDEとよばれるものだ
当然、viでコードやmakefileをシコシコ書いてコンパイルするのもありだが
今時いちいちそんなめんどいコトやってるヤツは希少種といっていい

とりあえず今ココではJavaはおいとく
[]
[ここ壊れてます]

267 名前:デフォルトの名無しさん [2018/09/26(水) 00:09:35.96 ID:I4Gvy1+q0.net]
なんか根本的な事を教えてくれて泣けてきます
wiki見ても端折ってばかりで理解できなかったんで嬉しいです
でもそれでも分かりません…

268 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:09:53.01 ID:h9A6ffHl0.net]
>>255
すみません、APIをコンパイルではなくAPIをリンクの間違いでした。

269 名前:デフォルトの名無しさん [2018/09/26(水) 00:11:25.00 ID:I4Gvy1+q0.net]
知恵遅れでもできる環境

僕が使ってるのはCygwinとVisualStudioですね
学校の課題はCygwin推奨ですが、何故かVisualStudioも入れられましたw



270 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:13:32.35 ID:OuxizmKlM.net]
>>258
まず、windowsAPIはC言語等の関数として提供されてるのはわかる?
そんでその関数のソースコードは公開されていない。だから、自分が書いたソースコードだけをmacに持っていってもソースコードが足りないので動かない。

仮にソースコードを手に入れたとしても、内部でwindowsのカーネル(コアとなるソフト)だけが提供している機能を利用使って実装されているから、やはりmacに持ち込むことはできない。

271 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:14:11.60 ID:HESLqYz40.net]
>>260
余談だけど、半角カナにこだわりのある通称半角クンに知恵遅れとか言われても気にする必要ないぞ。彼にとってただの二人称代名詞だから。

272 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:16:23.80 ID:0JN26GcE0.net]
>>257
ワイは希少種やったんか
世間じゃカーネルモジュールはどんな開発環境でやってるんや?

273 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:17:32.29 ID:h9A6ffHl0.net]
オレが書いたC言語のプログラムを機械語に変換すればようやくコンピュータで実行できるようになります。

APIは既に機械語に変換されているか、オレの書いたC言語と一緒に機械に変換されてからオレの機械語と結合して使われます。

274 名前:デフォルトの名無しさん [2018/09/26(水) 00:17:40.67 ID:I4Gvy1+q0.net]
>>261
まったく分かりません
WinAPIがC言語が混ざったらもう何がCでAPIなのか
もうわけわかりません

275 名前:デフォルトの名無しさん [2018/09/26(水) 00:18:24.20 ID:nZ7x0XR+0.net]
で、javaはコンパイルするとバイトコードに変換される
で、そのできあがったバイトコードはJavaVM(コレがチミがバイナリと読んでるものになる)で動かすことができる
昔のpascalのpコードのパチモンと考えればいい

そっから、さらに進んでバイトコードをjitコンパイラでコンパイルするしくみもあったりする
それ使うと実行モジュール(コレがチミがバイナリと読んでるものになる)ができてしまったりもする
ただ、その実行モジュールはターゲットマシンでないと動かない

で、当然、javaもeclipseみたいなIDE使って開発できる

わかった?

276 名前:デフォルトの名無しさん [2018/09/26(水) 00:18:39.07 ID:ZP32HEFJ0.net]
>>255
低級・高級(Low-Level/High-Level)は
言語体系がハードウェア実装=CPUに近いか
人間語に近いかどうかの話で
性能とは一切関係がない
(という話は確実に教科書に書いてあるはず)

CPUはバイナリしか解釈しないから
どんな言語を使ってもコンパイル作業が要る

277 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:22:18.55 ID:OuxizmKlM.net]
>>265
とりあえず、Cで何度かプログラム書いてみたらいいんじゃないかな。
知識だけ身につけると頭でっかちになっちゃうからね。

278 名前:デフォルトの名無しさん [2018/09/26(水) 00:23:21.36 ID:I4Gvy1+q0.net]
>>267
C言語は言語の中では最速だというのは教科書に書いてましたよ

279 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:24:33.00 ID:T1RBGvug0.net]
>>265
Cで書いたソースの多分先頭



280 名前:t近に並んでいると思う
#include で始まる行の部分だけでも公開してみて
WindowsAPIの為に入っている行を取り除けば
(このままではコンパイルエラーになるかも知れないが)
Wacに持っていく入り口にはたどり着ける
[]
[ここ壊れてます]

281 名前:デフォルトの名無しさん [2018/09/26(水) 00:26:15.28 ID:nZ7x0XR+0.net]
たとえばmacで
WinAPIと同じインターフェースもつ同じ機能のAPI(書くことができるかどうかは別ににして)を
Cで書くとmacでwindowが動く

時間があるならついでに
なんで、POSIXというもんがあるか調べてみるといい

282 名前:デフォルトの名無しさん [2018/09/26(水) 00:26:28.94 ID:I4Gvy1+q0.net]
>>270
#include<stdio.h>
int main(void)
{
〜中身〜
}
です。
int main
stdio.h
の二つはおまじないと聞きました

283 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:31:29.48 ID:T1RBGvug0.net]
>>272
ホントにそれだけなら、そのまま
Macに持って行けるんじゃないか?
あとはMac側でコンパイラが使えるかどうか、だな
VCでないと困る事ある?
MacでやるならXcodeと言うのを使った方が良いように思うが

284 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:32:08.86 ID:OuxizmKlM.net]
最初にWindowsAPIなんて言い出したやつは出てこい!!

  ドッカン   ゴガギーン
    _ ドッカン  ☆
===( )   /
`∧∧_||___ ∧∧
(  )|||   |(Д`)
f  ⌒~ ||   ||  \
|  / ̄ |   |/| / /
|  |  | ヘ/\|_/ /
|  | ロ|ロ\/\(_ノ)
( (_ \ |   | Y /
| ||\ ヽ|   | ||
| || / / |   | ||
| ||/ /_|___| ||
(_(_)     (__)


285 名前:デフォルトの名無しさん [2018/09/26(水) 00:32:38.48 ID:nZ7x0XR+0.net]
そういうコードだったら
macでコンパイルしなおせば
普通に動くハズ

286 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:33:06.80 ID:HESLqYz40.net]
>>269
C言語が速いんじゃないんだよ。
C言語で書かれたソースをコンパイルして生成されたバイナリコードが速いんだよ。それはCPUが直接実行できる形式だから。
別に他の言語でも、コンパイルしてバイナリコードが生成できるものは、本質的にはCと同じ。

遅いのは、バイナリコードを生成せずに、その言語固有のコードを生成して、それを別のプログラムが解釈しながら実行するようなタイプの言語だよ。例えばJAVAのような。(実行時コンパイルとかはこの際おいておく)

287 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:33:58.19 ID:0JN26GcE0.net]
>>272
おまじないは一個要らへんで
$ cat test-printf.c
int main(void)
{
printf("Hello\n");
return 0;
}
$ gcc test-printf.c 2> /dev/null
$ ./a.out
Hello

288 名前:デフォルトの名無しさん [2018/09/26(水) 00:34:42.00 ID:ZP32HEFJ0.net]
>>269
それは教科書がおかしいか誤読してると思われる
「現代の高級言語の中では最速のバイナリをビルドできることが多い」
とかならまあありだが

289 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:37:18.40 ID:3GYry5Z9a.net]
OSによって動くコード(アセンブリ)が違う

CでもC++とかで書いたコードをコンパイルする時にその対象のOSで動くように機械語に変換される
なので同じCやC++のコードでもコンパイルできれば動くプログラムが作成できる

しかし、標準ライブラリ以外はその対象OS用に用意されていない場合もあるのでそういうライブラリを使用した場合コンパイルが出来ない



290 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:37:56.89 ID:tnf9UX1gM.net]
ちょっと教科書名教えてくれwww

291 名前:デフォルトの名無しさん [2018/09/26(水) 00:38:29.20 ID:ZP32HEFJ0.net]
てかレポート出すような講義で「おまじない」で済ますもんなのか最近は
最初の質問もexeをそのままMacに持っていって動きますか?だったのかも

292 名前:デフォルトの名無しさん [2018/09/26(水) 00:43:17.15 ID:nZ7x0XR+0.net]
cygwin入ってると書いてあった
きっとgccもはいってるハズ
手動でコンパイルすればすぐに実行モジュールができるハズ

293 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:45:01.24 ID:9UO6BO9+0.net]
>>232
標準入力やファイルからテキストのデ

294 名前:ータを読んで計算してから標準出力またはファイルに出力するような
ほとんど計算しかしないようなやつなら何一つ変えずにコンパイルできる可能性がある。
しかしGUIで入力を受け付けてGUIで結果表示みたいな作りの場合はその部分だけMacに合わせて変更する
必要があると思う。(もし互換性のあるライブラリがあるのであればそれをリンクすればなんとかなるが)。
[]
[ここ壊れてます]

295 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 00:45:48.08 ID:9UO6BO9+0.net]
しまった。リロード忘れて書いてしまった。

296 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 01:37:55.43 ID:P+3GV8ah0.net]
バイナリは、各CPU に固有のもの。
intel・AT&T では逆に書く

; for intel syntax
mov eax, 1

# for AT&T syntax
mov $1, %eax

これらを抽象化する層、仮想アセンブラのLLVM ができた

C → LLVM → 機械語

297 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 02:25:42.64 ID:p8TYnMT50.net]
テキストファイルを#includeしたりするのっておもしろそうと思った。
#include "file.txt"
使い道がほとんど思いつかんけど。
正規化されたcsvファイルなら有用かもしれない。

298 名前:デフォルトの名無しさん [2018/09/26(水) 02:56:13.26 ID:9UO6BO9+0.net]
>>286
XPM や XBM フォーマットの画像ファイルは中身がテキストファイルでC言語になっているので、
プログラム中で使いたい時に #include で読むなんてことを昔やった事がある。
今でも画像を編集するソフトではそういうフォーマットに対応しているのがあるかも知れない。
あったら画像をファイルに保存後に中身をテキストエディタで見てみると良い。

XBM
sei.qee.jp/docs/graphics/xbm/index.html
https://en.wikipedia.org/wiki/X_BitMap
XPM
https://ja.wikipedia.org/wiki/XPM

299 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 02:57:00.82 ID:tnf9UX1gM.net]
ただしコンパイルはできるかな?



300 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 03:16:42.67 ID:p8TYnMT50.net]
XPMか。FVWMあたりのソースコード見れば実際に利用してるところがあるかもね。
なぜFVWMかと言うと ある程度小さくて読みやすいかなと思ったから。

301 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 04:48:38.00 ID:p8TYnMT50.net]
ていうかさ なんで
#include "file.txt"
なんていうことをやろうかと思ったかというとさ,

よくアプリケーションのオプションで--helpみたいなオプションがあってそれを指定すると
標準出力にヘルプ情報を吐き出すじゃない。
で,普通それを実現するには,print_help()関数みたいなのを作って
その中で
puts("Usage: xxx [-dx] <file>...");
↑こういうのをずらずら書きならべると思うんだよ。
git.savannah.gnu.org/cgit/hello.git/tree/src/hello.c#n127←こんな風に。
で,そのヘルプファイルを外部ファイルにできないかな〜と思ってさ。
print_help() {
puts("
#include "help.txt"
");
return 0
}
こういう感じで。もちろんこれはコンパイルエラーになるけど。

302 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 06:52:38.46 ID:ME0063O80.net]
普通にfopen(),fgets()しろよ

303 名前:デフォルトの名無しさん [2018/09/26(水) 07:02:15.89 ID:KRhEkOMN0.net]
  ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;;  #include "file.txt"
  ヾ;;;ハ    ノ       .::!lリ;;r゙
   `Z;i   〈.,_..,.      ノ;;;;;;;;>  そんなふうに考えていた時期が
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f.   俺にもありました
   ~''戈ヽ   `二´    r'´:::. `!


304 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 07:12:11.89 ID:Ozpnqin20.net]
argv[0]を使わずにusage表示するやつ嫌い

305 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 07:27:14.31 ID:3KpC5Lnu0.net]
>>291
実行ファイル内に組み込みたいんじゃないの

306 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 07:40:06.18 ID:slacS0cU0.net]
includeするファイルの拡張子が.hか.txtなんて関係ないよな。
中身がCのコードとして解釈できるかどうかだけで。

307 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 09:03:42.94 ID:X1sPOZNr0.net]
>>293
おれは好きだよ
argv[0]の長さとかわからないし、不安になるもんね

308 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 09:06:37.66 ID:3KpC5Lnu0.net]
独学で始めたての頃はリンカを知らなかったから、.c も全部 include してまとめてコンパイルしてたw

309 名前:デフォルトの名無しさん [2018/09/26(水) 09:48:26.11 ID:QtvShas/a.net]
>>293
かといって argv[0] って必ずプログラムファイルへのフルパスの文字列になってる保証はないよな?
UNIX系OSだとexecに渡す引数は実行するプログラムへのパスとargvの配列は別に指定できるしシェルは自身がログインシェルとして起動されたかどうかをargv[0]利用して判別してるし。



310 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 09:54:31.75 ID:+QPOg/oyM.net]
組み込みでreal型を使うメリットってなんでしょうか?
floatやdouble型との違いを教えて頂けないでしょうか?

311 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 09:58:20.00 ID:wpdgBSuMa.net]
「パス」は正しくないでしょ
ユーザがシェルに入力した文字列が入るわけで

312 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 10:04:04.84 ID:wpdgBSuMa.net]
real型ってなんだ?
D?

313 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 10:17:13.10 ID:Ozpnqin20.net]
>>298
フルパスである必要はない
そんなのはwhichで出るから重複もいいとこ

314 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 13:07:42.63 ID:tnf9UX1gM.net]
好きか嫌いかより規格で語れよ!!

315 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 13:15:13.67 ID:GcxNqKYyM.net]
で?

316 名前:デフォルトの名無しさん [2018/09/26(水) 17:10:26.81 ID:dsR47lxwa.net]
>>302
argv[0] が "-" だったらどうするよ。

317 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:10:59.41 ID:p8TYnMT50.net]
まあやっぱり#include "file.txt"なんて常人は考えねーよなw
いろいろすまんかった。

318 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:23:34.23 ID:T1RBGvug0.net]
>>306
使い道はあるよ
多量のマクロ定義リストを読ませるとか

319 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:27:31.74 ID:lDpRvfaq0.net]
ビットマップを本体のコードに埋め込むのに

char data[] = {
#include "bitdata.inl"
};

とかやった。 bitdata.inl は別のソフトで生成



320 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:33:26.10 ID:lncCaYQKM.net]
>>308
disるつもりはないし状況も分からんのだけど、バイナリデータをコードに埋め込んでコンパイルかけるのは筋が悪いような?

321 名前:デフォルトの名無しさん [2018/09/26(水) 17:35:54.43 ID:dsR47lxwa.net]
XPMやXBMみたいなテキストなんだろ

322 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:36:31.54 ID:cOtTFh6NM.net]
>>306
file.txt を C の文字列にした file.c なり file.h なりを作る簡単なスクリプトなり書いて、make ファイルでそれが動いて取り込まれるようにすりゃいいんじゃね。

usage:
-h help
-u unko

みたいなテキストを
#define USAGE "¥
usage:¥n¥
-h help¥n¥
-u unko ¥n¥
"

みたいな define か何かにすればいい。

323 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:37:28.54 ID:T1RBGvug0.net]
大量のテーブルデータをマクロ型式で記述して
includeの直前でマクロを望む内容で定義すると便利

324 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:40:44.37 ID:lDpRvfaq0.net]
>>309
(Windowsの話)
ライブラリを作ってるときに、そこで使いたかったんだが(ImageList)
リソースというわけにもいかず、ファイルを読み込むのもライブラリ化の意図からずれるし で
埋め込んだのよ

簡単に肥大化するから筋が悪いのは半分承知

325 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:41:52.02 ID:lDpRvfaq0.net]
ああ 件のファイルは 0x○○, 0x○○, … なテキストの

326 名前:tァイルです []
[ここ壊れてます]

327 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:50:39.66 ID:lncCaYQKM.net]
>>313
ああ、なるほど。
まぁ俺も組み込みでビルド番号を自動生成してソースにincludeで組み込むこともあるので人のことは言えないけど。

328 名前:デフォルトの名無しさん [2018/09/26(水) 20:19:36.31 ID:I4Gvy1+q0.net]
WindowsAPIを機械語にするソフトを機械語にするソフトを機械語にするソフトを…
って考えたらまた頭が混乱してしまいました…

329 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 20:25:14.53 ID:07am72nua.net]
APIとはインターフェースである。
見えるのは表面だけで中身なんてどうなってるかわからない。



330 名前:デフォルトの名無しさん [2018/09/26(水) 20:29:26.48 ID:I4Gvy1+q0.net]
CのコンパイラはWinAPIでしかかけないってことですか?

331 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 20:41:32.38 ID:zSos1f990.net]
Advanced windows買って読め じゃ乱暴か…






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<314KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef