C言語なら俺に聞け 148

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
垢版 |
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

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

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

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

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

※前スレ
C言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/09/30(日) 21:50:14.42ID:pfgCoU5B0
>>452
OSが分かんないけどtmpfsとか駄目なの?
2018/09/30(日) 22:13:05.28ID:vpsmo7Y3a
read/writeを包んじゃうとか。LD_PRELOAD的な。
実行中のメモリが読めるならなんでもありという気もするが
2018/09/30(日) 22:17:19.98ID:ZDEBOTA70
>>453-454
さっそくありがとうございます!OSはWindowsです。
方法はありそうですね?
教えてもらったキーワードで自分でも少し調べてみます!
2018/09/30(日) 22:21:51.99ID:6gTyS6vx0
そのライブラリの特殊なファイルを読み込む関数のインターフェースはファイル名を求めているのだろうか?
それともファイルへのハンドルを求めているのだろうか?

前者と仮定してうまく凌ぐ方法はあんのかな? 名前付きマッピングオブジェクトかなんか?
2018/09/30(日) 22:25:01.08ID:ZDEBOTA70
>>456
ありがとうございます。ファイル名です。
OSはWin10です。
2018/09/30(日) 22:27:41.29ID:ZDEBOTA70
tmpfsはWinだと使えないのですね?残念です。これはまさに理想的だったので。
LD_PRELOADは関数を上書きできるのですね。こちら更に調べてみます。
2018/10/01(月) 00:45:26.18ID:0BEK1cUt0
どれもWindowsじゃ無理っぽいですね… tmpfsが使えれば一番よかったんですが。
2018/10/01(月) 03:15:04.29ID:p5nbtFpra
FILE*で文字を直接参照するのと一旦文字の配列にコピーして参照するのとでは速度差はありますか?
2018/10/01(月) 04:00:25.04ID:2PPz6CoJ0
コピーするのに、メモリ・時間を使うから、

コピーしない方が速い
2018/10/01(月) 05:28:57.52ID:qsdLJDx40
>>460
コピーせずに直接参照ってどうやるの?
2018/10/01(月) 05:37:04.66ID:kFV2gm8E0
>>459
WindowsでもRAMDiskは作れる(そういうツールがある)けど、エレガントな方法はファイル系のAPIをHookするって手もあるかな?
2018/10/01(月) 09:06:42.48ID:Qvezncj/0
>>411
これなんてエディタ? 秀丸?
2018/10/01(月) 09:25:37.38ID:bI30HRk50
Spyderだろ
2018/10/01(月) 09:27:43.52ID:2PPz6CoJ0
メモリファイルは無いの?
2018/10/01(月) 09:33:21.48ID:UNHR2HPsx
メモリマップトファイルが使えれば良いんだけど、バイナリ提供内部でファイル名で直接CreateFileしちゃってるなら難しいんじゃないかな?
俺が知らないだけでうまい方法があるかもだけど。
2018/10/01(月) 09:51:55.51ID:7/sdPVVo0
>>452
ちなみにどんなファイルを読むライブラリなの?
比較的単純なら自分で書き直す方が早いんじゃね?と思ったり。
sqlite みたいなのになってくると手に負えなそうだけど。
2018/10/01(月) 10:05:04.00ID:5qQ+3kFva
暗号化したボリュームに書き込みたいとかいう話ではないんだよな
2018/10/01(月) 12:02:16.95ID:qsdLJDx40
ファイルマッピングだって、結局はディスク上のファイルイメージをメモリにキャッシュするだけだぞ
ライトバックキャッシュなので「書き戻せ」というコマンドを自分では書かないから
何か特殊なもののように誤解されやすいが、
ハード的にCSやWEがチャネルコマンドに変換されるとかそういうことは一切ない
2018/10/01(月) 12:05:58.57ID:AKKTs5+S0
名前付パイプ渡してうまくいくといいなー ぐらい
2018/10/01(月) 12:18:15.13ID:e2K2pEIVa
パス名でしか読み込めないクソライブラリをありもので解決するならramdiskしかないな
ライブラリを修正できるなら俺だったら読み込み処理をコールバックにする
2018/10/01(月) 12:26:59.19ID:0BEK1cUt0
みなさんありがとうございます。むずかしそうですね…
ファイルの仕様も公開されてないので自分で描き直すのもむずかしいです…
理想的な流れとして以下のように出来ればいいのですがむずかしいのですかね…
1 暗号化したファイル読み込み
2 暗号解除
3 メモリに元ファイルとして生成
4 ファイル名を元ファイルを読み込む関数に渡してメモリ上のファイルを読み込む
2018/10/01(月) 12:28:50.21ID:0BEK1cUt0
>>472
ramdiskですか。ちょっとそちらで調べてみます。ありがとうございます。
2018/10/01(月) 12:47:38.04ID:AKKTs5+S0
ramdisk も中間ファイル書き出してその名前を渡すのとかわらんでしょ
いずれにしろ復号済みのファイルが実体化しちゃってる
2018/10/01(月) 12:57:10.39ID:UNHR2HPsx
>>473
難しいというか、技術的な実現方法はいくつか思いつくけど要件がよく分からないのでこれにすべきと言えないだけ。
2018/10/01(月) 13:02:33.93ID:e2K2pEIVa
>>474
面倒な手順だけど、fuse+ramfsってのもあるか
windowsにramfsがあるか知らんけど
478デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/10/01(月) 13:15:50.57ID:yvyswmJaa
>>473
RAMディスクなら速いだろうけど普通のファイルシステムとアクセス方法は同じだから普通にディスクにファイル作っても同じだよ。
そのディスクがSSDならば正にRAMディスクだしな(ちょっと遅いかも知れないが)。

そのファイルは本当にRAMディスクのような高速アクセスできるようなファイルシステム上に作らねばならないものなのか?
2018/10/01(月) 13:19:01.59ID:0BEK1cUt0
>>475-477
みなさんありがとうございます。
要件としては元のファイル自体が公開されているライブラリで読み込めてしまうのでそれを防止したいんです。
ようは簡単に読み込めなく出来ればいいだけなんですね。
>>473でも一応メモリ内に復号後のものが実体化されちゃいますがとりあえずこれが出来ればいいかなと。
もう少し自分でも色々調べてみます。
2018/10/01(月) 13:21:27.31ID:AKKTs5+S0
>>479
メモリ内だけじゃなくエクスプローラから丸みえだし、ファイルも普通に読み書きできるよ? <ramdisk
2018/10/01(月) 13:24:04.57ID:0BEK1cUt0
>>478
なんというか単に目に見えるところに作りたくないというだけなんですね。
原理的には読めちゃうんだと思いますがとりあえず素で通常のディスクに書き出すよりは少しはマシかなと。
2018/10/01(月) 13:25:19.86ID:0BEK1cUt0
>>480
ramdiskはそうなんですね… それだとマズイなあ…
やっぱり見えない形で展開できればいいんですが。
2018/10/01(月) 13:30:03.85ID:UNHR2HPsx
RAMDiskをNTFSでフォーマットして適切なPermission管理すれば良いんじゃね?
2018/10/01(月) 13:40:12.23ID:0BEK1cUt0
あとRAMDiskについては使用者のPCに勝手にそういう領域を作っても問題ないのかも気になりました。
アプリが終了すれば常に確実に領域がクリアされ解放されればいいんですが何かのアクシデントで残ってしまわないかとか。
もうちょっと自分でも色々考えてみます。
2018/10/01(月) 14:13:49.93ID:2kmJAioya
隠蔽かつ高揮発?を実現したいということならいろいろありそう。
windowsのfuseって昔あったよな。
2018/10/01(月) 14:51:25.74ID:tOl4q5VhM
Windows詳しいマンはおらんのか
2018/10/01(月) 14:56:04.14ID:n3AkgheKM
だからAPI Hookだって。
2018/10/01(月) 17:27:27.14ID:sRgrdSMiM
すでに出てるけど、名前付きパイプかファイルマッピングオブジェクトじゃいかんのか
2018/10/01(月) 17:41:52.83ID:qsdLJDx40
Windowsの話してやってんのに通じないやつが何か文句言ってらあ
2018/10/01(月) 19:43:43.06ID:3ZN7cetya
パス名経由でしか読み込めないんだからありもので対処するならOS経由の手段に限られる
クソライブラリに手を加えられないなら自作するかramdiskで我慢するしかないよ
2018/10/01(月) 20:18:05.62ID:xRBX1/Y3M
もちろんwindowsの話なんだけどな
2018/10/01(月) 20:50:02.06ID:73T+9RSN0
>>487 狙うとすれば ReadFile あたりだろうけど、あまりに根っこ過ぎて
ちゃんと狙い撃ちしたい箇所だけに限定できるのか正直わからんところ
2018/10/01(月) 21:43:55.95ID:n3AkgheKM
>>492
狙うならCreateFileだと考えてた。
予めメモリマツプトファイルに復号化しておいてそのハンドル返せば、後はReadFileはHookしなくても煮るなり焼くなり好きにしてもらったら良いと。
2018/10/01(月) 21:58:38.38ID:2kmJAioya
dropboxとか具体的にどういう技術なん?
2018/10/01(月) 22:54:48.81ID:2yHgzixG0
APIHookかVFSを自分で実装するかになるんじゃね
前者の方が簡単そうだな
496デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/10/01(月) 23:58:25.83ID:zfKNS/F/0
CreateFileMappingにわたすCreateFileのファイルハンドルは
すでにファイルシステムと関連付けられたファイルハンドルになる

メモリならINVALID_HANDLE_VALUEを渡す

ドキュメントにしっかり書いてあるのに
相変わらず低学歴知恵遅れは
口からデマカセの頭悪いテキトーなことばっかりいってるわ。。。
497デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/10/02(火) 00:01:04.71ID:R8M7QKDK0
そもそも質問してるヤツはファイルシステムに復号化されたファイルができるのがダメといってるのに
相変わらずだわ。。。
2018/10/02(火) 00:19:59.97ID:9fPP7dMwM
ならばどうする半角よ
貴様の格の違いを見せてやれ
2018/10/02(火) 00:24:37.79ID:69sVZg4Ka
この流れで初書き込みだけどソースが公開されていないで思いどうりに読み込めないのであれば自分で実装したほうがいいんじゃね
バイナリモードで読み込めばいいんじゃないの
500デフォルトの名無しさん (ワッチョイ ffe9-WJev)
垢版 |
2018/10/02(火) 00:31:01.73ID:Cp0nvcbE0
また自演か
2018/10/02(火) 00:35:23.62ID:nity8XPfa
499だけどオレが自演って事になってるのか?
2018/10/02(火) 00:40:31.83ID:6wQ+/Q1Ma
dropboxは非同期にrsyncみたいなことしてる感じだな。
ここで求められてるのは同期だね
503デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/10/02(火) 00:55:56.80ID:R8M7QKDK0
検討がつかない

そもそも使ってる関数のソースが未公開の前提らしいからな
中でなにやってるかなんかまったく分からんからこういう質問してるんだろうしな
きっとReadFileを呼んでるのだろうという程度のことしか分からない
それは質問してるヤツもその程度は分かってるハズ

そして、そのファイルを読み込む関数のインターフェースもよく分からない
ファイルハンドルを渡すのかファイルパス渡すとかも分からない

情報が一切ないから検討しようがないといいたいが
両方とも検討した結果、簡単ないい方法が思いつかない
別プロセスにしてCONIN$使うとかインチキくさい方法ぐらいしかパッと思いつかなかった

でな、この要件に至るまでの根本的な部分について知りたい
その暗号化したファイルを今までどうやって出力してたかという部分になる
読み込みはその操作と逆の操作をすればいいハズだからな

もし暗号化して出力するときに、平文のファイルを一時的にテンポラリに出力してから暗号化してるなら
入力するときに平文のファイルを一時的にテンポラリに出力するのは許容範囲になると言い張れれば
コレで解決する

コレでイケルハズ
2018/10/02(火) 01:03:57.23ID:6wQ+/Q1Ma
そうじゃなくて、生データを隠したいんじゃないか?
2018/10/02(火) 02:49:53.61ID:qS1Sk5MG0
みなさん色々と案をありがとうございます。
あれから自分で調べたり考えたりしてたんですが
どうにかファイルの構造を知る事が出来そうで
中身を自分で書き換える(復号化ロジック込みの読み込み関数を書く)事にしました。
非常にお騒がせしてしまいまして申し訳ございませんでした!
2018/10/02(火) 04:36:17.92ID:yoF3UpeG0
Cのテスト関係のツールでおすすめとかありますか?
業務ではなく個人の趣味としてのプログラミングなので,できれば無償・オープンソースなのがいいです。
https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C
ここを見ると,やはりCに関しても単体テストが最適なようですが…
507デフォルトの名無しさん (ワッチョイ ffe9-WJev)
垢版 |
2018/10/02(火) 04:42:42.21ID:Cp0nvcbE0
本当に自演が大好きなんだな
2018/10/02(火) 06:50:29.85ID:yoF3UpeG0
? え,もしかして俺に対して?
そうだとしたら まったくの言い掛かりなんだけど……。
純粋に,単体テストのおすすめを訊きたいだけ。
2018/10/02(火) 11:07:45.33ID:Yfg2/nZYa
>>508
世の中のすべてが自演に見えちゃう病気の人かも知れないから、スルーしておけばいいんじゃない?
2018/10/02(火) 11:08:35.53ID:EEmEj/et0
まーた自演か
511デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/10/02(火) 12:14:34.37ID:RjhRAQY1a
まーた自演か
2018/10/02(火) 13:22:40.96ID:kk/2dA0Y0
「自演じゃないもん」なんて弁明しても証明できないところで相手すんなよ
無駄なことをする姿がバカっぽいぞ
513デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/10/02(火) 13:39:01.10ID:RjhRAQY1a
自演じゃないもん
2018/10/02(火) 19:19:05.31ID:Fj/XybmQM
ウィザードブックで勉強したって方いますか?
Cのレベル上げにも役立つかしら・・・
515デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/10/02(火) 20:40:47.26ID:R8M7QKDK0
ココまでオレのジエン
516デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/10/02(火) 20:51:11.45ID:hjXu6C7/a
>>514
ウィザードブックってなに?
2018/10/02(火) 20:53:08.03ID:pF626ax10
魔法使いがevalとapplyの球もってる奴じゃね
2018/10/02(火) 22:09:38.52ID:Fj/XybmQM
愛称違ったっけ?
『計算機プログラムの構造と解釈』です

>>517
です
λのやつ
2018/10/02(火) 22:37:55.33ID:WWljJiuT0
>>518
一般の人間が翻訳に参入しているようですね
2018/10/03(水) 00:45:37.81ID:+GJzyh+A0
>>518
愛称はSICPな。
http://sicpvn.sdf.org/smug.jpg

つか、全文訳されて公開されてるのな。
https://github.com/minghai/sicp-pdf/

詳細は以下。
https://qiita.com/kaz-yos/items/d1ecd4bfe9989c290e99
https://cpplover.blogspot.com/2016/05/mitsicp.html

なお、俺は読んだこと無い。
2018/10/03(水) 04:12:13.38ID:zPlOwhsg0
またトリップ付けないで書き込みしたの?
荒らしはもうやめておいた方が良いと思う
2018/10/03(水) 06:56:42.02ID:R1dsfyjz0
>>521
>またトリップ付けないで書き込みしたの?
>荒らしはもうやめておいた方が良いと思う

トリップつけないで書き込みするとどうして荒らしになるのですか?
というか、ほとんどの人がトリップをつけていないので、5ch は荒らしだらけ、ということですか?
2018/10/03(水) 07:02:45.12ID:IEc6BJqm0
アホは相手すんな
2018/10/05(金) 10:05:15.64ID:DxqDA2/Ip
https://i.imgur.com/BsiX5iK.jpg

添削お願いします。
2018/10/05(金) 10:17:32.97ID:6zSKEd8l0
>>524
minute と second は while の中のスコープで宣言するといい。
あと second を printf する時、お前のやりたいことは多分 %02d でできる。
0詰め2桁表示ね。
2018/10/05(金) 10:21:58.92ID:3s3m6VbBM
sleepは1秒待ってくれるとして、
前後の処理がどうしても正確に0秒でできるわけではないので誤差が溜まっていく。
定期的にシステムの時刻を見て秒の変わり目を検出するほうが正確。
2018/10/05(金) 10:26:30.21ID:6zSKEd8l0
>>524
これはこうすべきってことでないけど、画面を消す clear、これが何をやってるか調べると面白いかもよ。
とりあえず
clear > log
とかやって log に何が書かれてるか見てみるといい。
次に
cat log
とやると何が起こるか確かめてみるといい。
これがわかると画面を消すのに clear なんて外部コマンドを使わなくてもよくなる。
2018/10/05(金) 10:44:56.64ID:uhmiVRnQa
>>524
whileとelseは直後に空白あける。
2018/10/05(金) 11:16:24.26ID:DxqDA2/Ip
https://i.imgur.com/ldQVwUT.jpg
↑ソースコード

https://i.imgur.com/eCYNPsi.jpg
↑実行結果

となりました。
「set number」と「syntax on」を初期設定したいのですが、どうすればいいですか?
2018/10/05(金) 11:16:46.89ID:FRcGP58U0
free run counter
2018/10/05(金) 11:19:04.80ID:DxqDA2/Ip
あと、iPhoneのタイマーと比べた結果カウントが遅くなっていたことがわかりました。これは前後の関数を実行する際にノータイムでは出来ないことが原因だと考えられます。
2018/10/05(金) 11:20:50.09ID:6zSKEd8l0
>>529
ちょっとまて、>>527 を試そうとしてる雰囲気だけど、clear > log とか cat log はソースコードに埋めるんじゃなく、コマンドラインとして叩くんだよ。
2018/10/05(金) 11:44:12.58ID:DxqDA2/Ip
https://i.imgur.com/5usTieQ.jpg

流れが速くて打てません。
2018/10/05(金) 11:54:29.41ID:DxqDA2/Ip
while の中でminute,secondを宣言したら回るたびに宣言する事になるので、なんかダメだと思いました。

あと、ちゃんとしたタイマーを作るにはどうすればいいのか知りたいです。
2018/10/05(金) 11:56:56.95ID:aS2keCHZa
画面が流れるんでなくて、部分的に書き換えたい感じ?
cursesを使うのじゃ
2018/10/05(金) 12:03:40.55ID:3s3m6VbBM
教え方の下手くそな教えたがりばかりで
あげくにcursesまで初心者に吹き込んで質問者大混乱
2018/10/05(金) 12:22:47.81ID:NVTQRcnQa
>>524
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
538デフォルトの名無しさん (スップ Sd00-t0aP)
垢版 |
2018/10/05(金) 12:23:53.35ID:G8OY4AG7d
そこは教え方の上手なあなたが教えてあげれば良い事だな
2018/10/05(金) 12:50:10.63ID:cQzHZ22n0
>>537
歴史に残る名言だなw
540デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
垢版 |
2018/10/05(金) 12:50:15.78ID:qaFHFmCDa
>>537
それ、もういいですから。
2018/10/05(金) 13:01:08.97ID:vpbu8eze0
clear > log
cat log

Linux の基本コマンドも知らないような奴が、C をやるな!
10年勉強してからやれ
2018/10/05(金) 13:01:39.72ID:6zSKEd8l0
>>533
>>527 で言ってるのは >>524 の実行とは別の話。
画面を消す方法の正体を調べる手順だから、ヒマな時にやればいい。

>>534
宣言はコンパイル時に解釈されるもので、実行時に「宣言という動作」を行っているわけじゃない。
だから実行時にかかるコストは無いから、ループの中に書いてもいい。
C は変数が見える範囲(スコープ)が { } の中になってる。
minute と second は while で回してる { } の中でしか使ってなく、かつ表示のための一時的な変数だから、それを必要とする範囲内だけで見えるようにすると分かりやすくなる。
変数のスコープは極力狭くなるように書くといいよ。
分かりやすさの点でもいいし、メモリ(スタック)の消費量も少なくなる。

正確なタイマーを作るならインターバルタイマーで調べてみるといいけど、まだそれを使えるレベルじゃないと思う。

>>536
curses ってなに?
543デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
垢版 |
2018/10/05(金) 13:03:13.60ID:qaFHFmCDa
>>534
1秒ごとに setitimer() とか使って割り込み掛かればいいんだけどね、普通のOSだとあまり正確にではないかも知れない。しかしただsleepするよりは正確だと思う。

割り込み使わないやり方で今と似ているけどましなやり方は次の処理開始時間までより正確に sleep することだ。
これは gettimeofday() でμ秒までの時刻を取得して秒が変わるまで何μ秒なのか計算して usleep() で sleep させればできる。
2018/10/05(金) 13:11:04.98ID:6zSKEd8l0
curses ってライブラリか。
面白そうだな。
2018/10/05(金) 13:31:56.77ID:DxqDA2/Ip
>>542
変数の宣言はコンパイル時に解釈されているのですね。わかりました。

「set number」と「syntax on」を初期設定にするにはどうすればいいですか?
2018/10/05(金) 13:33:35.60ID:DxqDA2/Ip
あと、インターバルタイマーも調べて起きます。
2018/10/05(金) 16:55:26.05ID:NK5dBb8n0
>>545
printf '%s\n%s\n' 'set number' 'syntax on' >> ~/.vimrc
2018/10/05(金) 16:56:30.81ID:NK5dBb8n0
ていうかエディタの名前くらい書け。
まあset numberという設定名のエディタはVimくらいしか思い付かんが。
2018/10/06(土) 10:59:41.46ID:YTpMAVXmM
そこはggrksだろ

なに遊ばれとんねん
2018/10/08(月) 11:16:41.41ID:5icYsRLJ0
H8 (3694) と秋月キャラLCD(SC1602) のI/F 関数です。

//--------------------------------------------------------------------
#include<3694.h> // CPU のレジスター定義、その他関数のプロトタイプ

struct DATA_BUS{
unsigned char NOTUSE:4;
IO.PDR8.BIT.B7;
IO.PDR8.BIT.B6;
IO.PDR8.BIT.B5;
IO.PDR8.BIT.B4;
}; // IO.PDR8.BIT.B3 は不使用

#define LCD_RS IO.PDR8.BIT.B2 // P82を LCD RSに定義
#define LCD_RW IO.PDR8.BIT.B1 // P81を LCD R/Wに定義
#define LCD_E IO.PDR8.BIT.B0 // P80を LCD Eに定義
#define LCD_DB DATA_BUS // P83〜P87 のみをLCD D4〜D7 に定義したい
//--------------------------------------------------------------------
LCD_DB に構造体の入れ子(DATA_BUS) を定義しています。この書き方で動作しますか。この関数の作者はLCD_DB にunsigned char 型で下位4ビットのみ有効なchar 型を代入していました。
2018/10/08(月) 13:21:40.69ID:i8/5B6xca
関数がないじゃん
2018/10/08(月) 13:57:42.90ID:wqzMNkqt0
そもそもコンパイルできなかったのでは?
構造体のメンバにB4〜B7みたいな定義済みの定数は書けないよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況