X



C言語なら俺に聞け 142 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8a6f-bDrV)
垢版 |
2017/08/10(木) 20:21:23.44ID:hEocmkh50
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/


http://mevius.2ch.net/test/read.cgi/tech/1500293207/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0322デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
垢版 |
2017/09/21(木) 20:42:10.28ID:x8dEnzes0
for(;~scanf("%d",&a);)とかwhile(~scanf("%d", &a))とかで~がないだけで永遠に入力ループするんだけど
~ってなにを宣言してるんだ教えてくれ
0325デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
垢版 |
2017/09/21(木) 21:23:35.16ID:kYTPFpbC0
本来なら 変数a に格納されるまでループしたい意図だろうけど・・・・・

scanf の戻り値は 代入操作できた変数の数で
0 だと入力のフォーマットに合致しなかったわけなんだが (ここまでは素直)

一旦 その状態になると、次に正しく入力しても拾ってくれない scanf 独特の挙動があって
正しく入力しようが 0 のままというkuso

件の場合
 最初の入力で数値ではない o を与えると (%d で受けれないので失敗)
次のループの入力で 1 を与えても やはり変数に格納ざれずに失敗したまま

これがあるので scanf は使うな、と良く言われてる所以
0326デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
垢版 |
2017/09/21(木) 21:54:22.20ID:x8dEnzes0
一行読み込みで同じ処理を数値なくなるまでしたいんだけどどう読み込んだ方がいい?
0327デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
垢版 |
2017/09/21(木) 22:19:34.61ID:kYTPFpbC0
fgets で行単位で読み込み
その行バッファに対して sscanf で変数に拾い上げするなり、11文字ずずつ字句解析するなり

char buf[512];
int a;
while (fgets(buf, 512, stdin)) {
 /* 1行読んだよ */
 
if (sscanf(buf, "%d", &a) != 1) {
  /* 数値じゃないのが来たのは無視する */
continue;
 }
/* a に値が格納されたよ */
:

}
0333デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
垢版 |
2017/09/22(金) 01:39:40.49ID:BRiVyzo00
forの継続条件がどう動いてるのかわからないな読み込めた時はループして読み込めなかったときはループ抜けるってのがどう判定されてるのか見えないな
0334デフォルトの名無しさん (ワッチョイ eb6f-9dtB)
垢版 |
2017/09/22(金) 02:12:21.25ID:exEqzPdX0
>>333
scanf("%d",&a);
で、数値が来れば取り込みに成功した個数、つまり1を返し、失敗なら0を返す
それを~でビットNOT、つまり各ビットを反転させるので
成功なら0x00000001を反転で0xFFFFFFFE、失敗なら0x00000000を反転で0xFFFFFFFF

ようするにどうやってもループを抜けないので、結論としては「そもそもループ条件として間違ってる」
>>324の言う通り~は不要
0336デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
垢版 |
2017/09/22(金) 03:10:18.60ID:IvB4cJv30
>>335
簡単なので多分もう世界中に山ほどあると思うが、標準化されてないだけだろうな。
0337デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
垢版 |
2017/09/22(金) 05:10:39.06ID:BRiVyzo00
while((a=Console.ReadLine())!=null)こうゆうので入力がなかったら終了するって簡単にできればC言語も楽なんだけどな
0338デフォルトの名無しさん (ワッチョイ de1c-iatd)
垢版 |
2017/09/22(金) 14:57:26.19ID:8MJCwgYc0
int *get_int(int *dst, jmp_buf err)
{
if (scanf("%d", dst) != 1)
{
if (err) longjmp(err, 1);
else return NULL;
}
return dst;
}
こんなしょーもないのでいいのに標準化委員会は斜め上なことばかり・・・
0339デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
垢版 |
2017/09/22(金) 20:47:03.45ID:dtN6vQMf0
>>334
でもscanfの前に~あるだけで入力なくっても無限ループしないで抜けるのはNOTと戻り値がNOTでtureだから抜けるの?
0340デフォルトの名無しさん (ワッチョイ 3b23-Iax1)
垢版 |
2017/09/22(金) 22:06:16.56ID:IvB4cJv30
チルダ付けたのは失敗した時に-1が返されると思ったからかな?
てか、チルダ付けた場合はそれ以外で0にならんよな。
まあでもこれも整数値の内部表現の違う特殊な環境だったりしたらダメかも知れないが。
0343334 (ワッチョイ eb6f-9dtB)
垢版 |
2017/09/22(金) 22:25:08.34ID:exEqzPdX0
ごめんウソ書いたわ
一つも変換されないで入力エラーになったらscanf()は0ではなくEOFを返すらしい

>>339
よって多くの環境ではEOF==-1(0xFFFFFFFF)だからその反転で0になってループ抜けるということだね
0346デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
垢版 |
2017/09/23(土) 11:43:39.39ID:8bsZ0VcP0
>>345
どうやらそのようだな。Linuxのmanで見てみたらそんな風に書いてあった。
とすると入力が閉じないで変換失敗した場合は0が返されて無限ループになるな。
0347デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
垢版 |
2017/09/23(土) 14:50:28.05ID:IblrvTVf0
Win32環境なのですが
_beginthread関数で、thread1, thread2を回し
グローバル変数g_nをthread1の中で変更しても
thread2から正しい値が参照できません。参照できないというよりthread2が機能しなくなるように見えます。変数表示がカットされる。
VisualC++でプログラムしてるのですがデバッグモードだと普通に動いて
リリースモードだと動かなくなります。グローバル変数にvolatileをつけてみてもダメでした。
何が原因でしょうか?
0348デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/23(土) 15:16:24.27ID:PasvkTo90
具体的なコードもなく原因を聞かれても、どうしようもないと思うぞ

VCの拡張機能で相応の機能が追加されてたような気もするが
本来volatileにスレッド間での排他やメモリバリアの機能はないからな
0349片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-UlYp)
垢版 |
2017/09/23(土) 15:34:39.04ID:oO/4QkxId
>>347
デバッガ側で例外をキャッチして、呼び出し履歴を調べると何かわかるかもしれない。おそらくゼロ除算かアクセス違反かスタックオーバーフロー。
0350デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
垢版 |
2017/09/23(土) 16:05:08.45ID:IblrvTVf0
>>348-349
thread2の中身を以下みたいにtry〜catchで囲むと何故か直りました…
でもcatchの中は実行されてないです… 少しcatchの中身を書き足すとまたダメ…
どういうことだろう…
void thread2(void*)
{
try{

} catch (...) {

}
}
0358デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
垢版 |
2017/09/23(土) 21:54:35.77ID:IblrvTVf0
>>356
たぶん原因が分かりました。
現在は標準関数をやめてWINAPIのCreateThreadを使ってますが標準関数と原因は同じです。
CreateThreadでThread1,Thread2を作成して監視してるとあるタイミングでThread2が消失してたのですが
どうやらThread1で変更があった他のグローバル変数の値がThread2で上手く読めずに終了判定されて消えてたようです。
ようするに他のグローバル変数の書き換えが原因でした。
ロック処理をしたりしたのですが上手く行かずグローバル変数すべてにvolatileをつけると上手く動いてるようです。
でもこの回避作で良いんでしょうか?CriticalSectionを使ったりして処理してもうまく他スレッドでグローバル変数が
参照出来なかったのでvolatileをつけてみたら完璧に動作するようにはなったんですが……
0359デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
垢版 |
2017/09/23(土) 22:09:28.20ID:9QRg4G5c0
排他制御の問題ではなく
最適化の作業で、変数を不変値と判断し、変数参照を追い出した翻訳をしたパターン

int a; // グローバル変数
void foo() { a = 1; while (a) { /* */ } }

a は文意から不変の定数として扱えるので
while (1) { /* */ }
に翻訳しちゃえるわけさ
0361デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
垢版 |
2017/09/23(土) 22:28:00.05ID:9QRg4G5c0
volatile つけるのは1つの手ではあるが 100% 回避してくれるかは、コンパイラ次第
スレッドで共有するフラグ関係はOS側が用意してる機構を使うほうが良いんだけどねー
0363デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/23(土) 22:58:35.90ID:PasvkTo90
何の変数を使ってるか知らんが、排他取ってねーんだから書き換え途中の変数を読み取ってバグることもあるだろ
最近のVCはvolatileだけでマルチプロセッサ対応のメモリバリアになるらしいから、古いVCでビルドしてもアウトだな

まあ滅多に起らないからローカルでそれっぽく動けばいいのなら、十分じゃねーの
0364デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
垢版 |
2017/09/23(土) 23:10:54.21ID:Z1NsXN0c0
>>358
いや、359ではなくて、363の言うとおり、
> ロック処理をしたりしたのですが上手く行かずグローバル変数すべてにvolatileをつけると上手く動いてるようです。
これが問題だと思うぞ。つか、ロックしろよ。
volatileの意味分かってるか?
それ多分他スレッドから書き換えられたときに自スレッドのその値が更新されておらず、バグるのだと思うぞ。
ただしこの場合は、
> 最近のVCはvolatileだけでマルチプロセッサ対応のメモリバリアになるらしい (>>363) ←コマ?
が正しいのならvolatileでも確かに治りそうな気はするが。で、これってマジなん?

つかね、マルチスレッドでグローバル変数を使いまくること自体がだね、、、
0365デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
垢版 |
2017/09/23(土) 23:20:05.48ID:Z1NsXN0c0
>>363
調べてみたんだが、これか?
> Microsoft 固有の仕様 → /volatile:ms の項目
> ・volatile オブジェクトへの書き込み (volatile 書き込み) は、解放セマンティクスを持っています。
>  つまり、命令シーケンスで volatile オブジェクトへの書き込み前に発生するグローバル オブジェクトまたは静的オブジェクトへの参照は、
>  コンパイルされたバイナリでの volatile 書き込みの前に発生します。
> ・volatile オブジェクトの読み取り (volatile 読み取り) は、取得セマンティクスを持っています。
>  つまり、命令シーケンスで volatile メモリの読み取り後に発生するグローバル オブジェクトまたは静的オブジェクトへの参照は、
>  コンパイルされたバイナリでの volatile 読み取りの後に発生します。
https://msdn.microsoft.com/ja-jp/library/12a04hfd.aspx
これならロックではなくフェンスだね。volatileでは直らないはず。
0367デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
垢版 |
2017/09/23(土) 23:26:59.26ID:IblrvTVf0
>>361-365
CriticalSectionつかってグローバル変数の書き込み時にはロックをするのも試してみたんですが
やっぱりthread2が途中で死んで(内部のループで終了判定になってしまって)、ダメだったんですよね。
それがグローバルにvolatileをつけると普通に動作するようになってるんです……
0368デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
垢版 |
2017/09/23(土) 23:29:48.18ID:IblrvTVf0
こういう事ですか?
CriticalSectionによるロックもやる必要がある。理由はロックしてない時固有の問題もあるから。
今回の不具合はコンパイラの最適化が原因だったのでvolatileで回避できただけ。
ロック処理もvolatileも両方やる必要がある。ということですか?
0369デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
垢版 |
2017/09/23(土) 23:33:50.34ID:9QRg4G5c0
書き込み時だけロックして 読み込み側のほうはロックせずに読み込んでる
片手落ちのように受けとれる文章だけど・・・ 排他制御をちゃんとやってたうえでの話?
0370デフォルトの名無しさん (ワッチョイ 3b23-Iax1)
垢版 |
2017/09/23(土) 23:49:15.83ID:8bsZ0VcP0
volatileにしてロックして読み書きするのが普通では?
0372デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
垢版 |
2017/09/23(土) 23:57:26.40ID:Z1NsXN0c0
>>368
× > 今回の不具合はコンパイラの最適化が原因だったのでvolatileで回避できただけ。
○ コンパイラの不具合ではなく、君のコードの問題で、
 volatileで動いているように見えるのはバグに当たる確率が低くなっただけで、直ってはいない。

ただ、366の通り、全部ロック+フェンスすれば直りそうな気はする。
つか、そもそもフェンスが大量に要るような使い方でマルチスレッドするのが問題なんだが。
0373デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/24(日) 00:00:33.14ID:jg2xx4vD0
posixだとロックAPIにメモリ同期の効果があるから、普通はvolatileいらんけどな
CriticalSectionも共有リソースへのアクセス制御用の関数なんだから、同じはずだと思うけども
0375デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
垢版 |
2017/09/24(日) 01:04:50.76ID:R8lp94JX0
>>374
> どうやらThread1で変更があった他のグローバル変数の値がThread2で上手く読めずに終了判定されて消えてたようです。(>>358)
この場合はvolatileをつけないと話にならない。(ただし本来の使い方ではない)
コンパイラのバグではなく、多分デバッグビルド時には毎回読み出しだっただけ。(最適化なし、なおフェンスもなし)

データ同期する気がなければフェンスは本来は要らない。
ロックはしないと書きかけの値を掴んだりしてバグる。

ここら辺分かってなくてグローバルで同期ってのはマルチスレッド初心者なのだろうけど、
バグったらsync入れまくってデバッグはセオリーではあるし、まあがんばれ、と。
ただ、おそらく同期の仕方を根本的に間違ってるから、知ってる人に見てもらったほうがいいとは思うが、
コード内のグローバルは常に「最新」を期待しているのであれば、ロック+volatile+フェンスで動くはずでもある。
0379デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/24(日) 10:21:22.00ID:jg2xx4vD0
はあ、そうですか
共有リソースの排他アクセスのためのAPIなのに、ロック対象がわからないからロック無視して最適化しますと
それが真実ならWinAPIとVCが腐ってるんじゃないですか
0382デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
垢版 |
2017/09/24(日) 13:57:54.86ID:c233uqnI0
腐っているのでしょう
0383デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/24(日) 14:40:58.49ID:jg2xx4vD0
メモリバリアを跨いでオブジェクトへのアクセス命令を最適化するとか
そんな頓珍漢なことを言う腐った奴がいるとは思わなかったわ
volatileを何だと思ってんだか
0385デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/24(日) 16:31:41.65ID:jg2xx4vD0
CriticalSectionの話のつもりだったんだけど、CreateSectionに変わったの?
それならごめんだわ、>>378で唐突に出てきて誤字だとばかり
さすがにそんなアホな話題転換があるとは思わなかった
0387デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/24(日) 17:30:54.77ID:jg2xx4vD0
>The following synchronization functions use the appropriate barriers to ensure memory ordering:
>Functions that enter or leave critical sections
>Functions that signal synchronization objects
>Wait functions
>Interlocked functions
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686355(v=vs.85).aspx
調べたけどCriticalSectionだけで十分そうだよ
Internallockedとかのほうが手軽そうだけどね
0389デフォルトの名無しさん (オッペケ Sra3-Brv+)
垢版 |
2017/09/25(月) 03:09:32.37ID:eX6e3GbIr
Cのコンパイラはクリティカルセクションなんて知らない。単なる構造体かなんかのtypedefとして実直にコンパイルするだけ。
スレッド関連の関数についても単に関数の一種として扱うだけ。

従ってスレッドやクリティカルセクションを扱っているかどうかが最適化の結果に影響することはない。
一方volatile指定はコンパイラが認識するキーワードで最適化に影響する。
0390デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
垢版 |
2017/09/25(月) 04:54:33.75ID:glvYaQMb0
ということは今回の事例だと排他制御しても不具合は解消できなかったという事かな?
volatile付けて最適化を無効にすることが正しい解決策だったということになる?
0391デフォルトの名無しさん (ドコグロ MMb3-gXon)
垢版 |
2017/09/25(月) 06:45:40.93ID:/OvZrhVRM
>>387
だからそれはメモリーバリアの話で最適化の話とは別だよ
繰り返しになるけど CriticalSection は排他制御するリソースを知ることはできないしコンパイラも CriticalSection のことを知らない
0398デフォルトの名無しさん (オッペケ Sra3-Brv+)
垢版 |
2017/09/25(月) 12:40:04.95ID:uoxmxxDAr
>>394
おおごめん、規格自体には詳しくない

しかし…
pthread関連の標準関数や定義を仮にコンパイラが特別扱いしたとすると、標準関数をラップしたり自作ライブラリで代替した場合に最適化の結果が変わるのかな?
そんな風にコンパイラ作るものなんだろうか。
0399デフォルトの名無しさん (ワッチョイ aaef-PvnN)
垢版 |
2017/09/25(月) 20:34:55.44ID:6/+o0Gkh0
posix-thread 関係については C++11 で追加されたが,
あくまでも言語処理系の中で定義された識別子(関数とかクラスとか)を使わないと,コンパイラには分かりえないよ.
CreateThread() とか CriticalSection とかの W32API の用語を,無指定でコンパイラが理解できるわけがない.
0400デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/25(月) 20:47:31.93ID:LPAVGpvK0
>>390
コンパイラは基本的に問答無用で最適化するけど、それだとマルチスレッドではプログラマの意図しない最適化が起こってしまう
だから、メモリバリアを挟んだアクセス命令を入れ替えないことにしている
言い換えると、メモリバリア前に読み込んだ値をメモリバリア後も使うような最適化はしない
よって、バリア+ロックで十分

共有リソースは全部volatile付けるなんてしてたら、kernelのソースとかvolatileまみれになるでしょ
0401デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/25(月) 21:45:53.20ID:LPAVGpvK0
当然、ローカル変数とか他から変更されないことが明らかなオブジェクトであれば最適化が起こる可能性は否定しない
グローバル変数の場合は、最適化されない

やってみればわかるけど、CriticalSecltionの有無でアセンブル結果が違う
0403デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
垢版 |
2017/09/25(月) 23:03:28.51ID:LPAVGpvK0
CriticalSectionに限らず未知の関数が呼ばれたのであれば、その中でグローバル変数やらが変更される可能性を考慮しなければならない
他にも、ある関数の引数にローカル変数のアドレスを渡すと、以降の別関数内でそのアドレス経由でローカル変数を変更される可能性がある
よって、場合によってはローカル変数であっても関数呼び出しを跨いで最適化できなくなることがある

わからないからこそ、最適化してはならないんだよ
0404デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
垢版 |
2017/09/25(月) 23:26:04.50ID:3XblncDf0
>>390
ならない。君のソースコードだけの問題だ。同期機構の使い方が悪いだけ。

スレッドなんてここ20年間バリバリに使われてる。
VC等の小慣れているコンパイラなら、最適化ありで全く問題なく動く。
(マルチスレッド向けのデバッグは完了している)
Debugでは動くがReleaseでは動かないケースに遭遇した初心者は、君のように
「最適化の問題であり今回はDebugを使うこと」を正当化したがるが、これは間違いだ。
ただしDebugビルドでもバイナリは出来るから、問題ないのならそれを使う手もある。
0405デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
垢版 |
2017/09/26(火) 00:33:15.50ID:8E9hjYW60
ちゃんと排他処理が出来ていないことに気付かず、デバッグオプション付きとか
遅いマシンとかで正常動作してしまい、何年後かに速いマシンにリプレイスしたら
丁度良くバグが顕在化するようなタイミングになってしまった、

なんてことが以前本当に起きた。

サーバ用とかでソフトが長期間使われる場合は要注意だ。
0407デフォルトの名無しさん (ワッチョイ 1eaa-ZPBl)
垢版 |
2017/09/26(火) 01:21:21.88ID:mvSUAuA/0
マルチスレッドは、たまたま動いているだけで、
ちょっとしたタイミングで、バグる

初心者は、たいてい、コンパイラのバグのせいにする。
それか、リリースビルドの最適化がおかしいと言う

プロは、Elixir などの関数型を使う
0408デフォルトの名無しさん (ワッチョイ 3b23-Iax1)
垢版 |
2017/09/26(火) 02:12:13.37ID:8E9hjYW60
いや、ちゃんとロックすりゃなんとかなるってw
もちろん最初から考慮されてる言語は何も考える必要ないからうまく行って当然。
0412デフォルトの名無しさん (ワッチョイ 1396-Otw/)
垢版 |
2017/09/27(水) 16:40:21.40ID:zCHNwx740
初心者です。エラーでまくりでコンパイルすら出来ません。アドバイスお願いします。

■やりたいこと。
マウス入力にrawinputを用いるアプリのWndProcをフックし、rawinput(WM_INPUT)を強制オフにし、DirectInputを使用するように指定。

↓ソース


// FuckRawInput.c

#include <windows.h>

LRESULT CALLBACK WinProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_CREATE:
{
RAWINPUTDEVICE Rid[1];
Rid[0].usUsagePage = 0x01;
Rid[0].usUsage = 0x02;
Rid[0].dwFlags = RIDEV_NOLEGACY;
Rid[0].hwndTarget = hWnd;
RegisterRawInputDevices(Rid, 1, sizeof(Rid[0])) == FALSE) ;
break;
}

-----
また、この方法が最適なのかも不明です。ほかの方法等もあったら教えてください
0415412 (ワッチョイ 1396-Otw/)
垢版 |
2017/09/27(水) 21:51:08.08ID:zCHNwx740
>>414
そのままの意味でC言語初心者ですけど?
rawinputを消し去りたいがためにプログラム未経験ながらC言語入門書を読み、
Visual studio2013でハローワールドのコンパイルに成功した所です。

他スレで聞いたら、
DLLインジェクションでAPI関数を置き換えといわれたんですが、
まぁ、それと同じような事をしようとして書いたソースが>>412

目的達成するためにどこが悪いのか教えてくださいよ
■ このスレッドは過去ログ倉庫に格納されています

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