C言語なら俺に聞け 141 [無断転載禁止]©2ch.net

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2017/07/17(月) 21:06:47.63ID:J4JGo3XO
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/1494508803/
http://www.geocities.jp/c_cpp_cs/about_c/
2017/08/09(水) 00:30:50.08ID:s1XZJ5Nh
>>886
実行中のプロセスにアタッチして、アセンブラ見ながらステップインで解析したいんだけどVSじゃ出来なくない?
2017/08/09(水) 00:31:28.95ID:8y5srZEo
用語オブジェクトについての哲学的な論考や定義そのものがJISには載ってなさそうだな

深く考えずに音写しただけ
だからカタカナの用語になってる
2017/08/09(水) 00:34:53.01ID:7zaXDMDr
>>864
それが、ポインタと配列の区別をつけられない本質だ

>>744の大ウソをゴメンなさいしてからホザけ カス
2017/08/09(水) 00:35:31.88ID:bb8twRCP
>>887
バージョンやエディションによって使える機能が違う。気にせず使いたいなら、「買え」
2017/08/09(水) 00:37:19.05ID:s1XZJ5Nh
>>890
学生だしお金ないからね
2017のcommunityじゃ無理?
2017/08/09(水) 00:37:30.14ID:bb8twRCP
>>744
訂正。関数の型が決まってなくともコンパイルできることがある。
2017/08/09(水) 00:40:01.14ID:bb8twRCP
>>889
お前は人間失格だ。言葉が悪すぎる。
2017/08/09(水) 00:46:00.24ID:7zaXDMDr
>>893
あなた様も障害者手帳の申請をする事をお勧めするしだいで御座いまする。

まず、頭脳が残念過ぎまする。
そして、頭脳が残念過ぎまする。
加えて、頭脳が残念過ぎまする。
きっと、高い等級で認定されると愚考致しまする。

敬具
2017/08/09(水) 00:46:00.43ID:s1XZJ5Nh
ポインタの話題ならアセンブラやった方が早いと思うんだよね
ポインタとして宣言された変数は32bit環境なら4バイト、64bitなら8バイトのメモリが確保されるだけだが、配列の場合、サイズ×添字の分メモリが確保されて、配列名がその先頭アドレスをあらわすってだけなのに
2017/08/09(水) 00:48:50.01ID:ckc2uc+D
>>891
VS2017Enterpriseならこんな感じ
Communityはよくわからん
http://i.imgur.com/wI7bq3C.png
2017/08/09(水) 00:51:21.74ID:s1XZJ5Nh
>>896
いい感じだな
でも俺がやりたいのはソース無しの実行可能ファイルを、アセンブリを表示しながらステップインだからVSじゃ出来ないのかも…
まあ言っちゃうとクラックがしたいんだけどね
2017/08/09(水) 01:02:47.80ID:bb8twRCP
>>894
現実世界ではあのごとき言動はアウトだからな。忠告だ。
2017/08/09(水) 01:05:03.10ID:Mt1oO7bk
>>897
Windowsで?
Linux なら gdb でやれそうな感じはするが、ソースなしだとどうなんだろう?
900C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 01:06:30.01ID:s1XZJ5Nh
>>899
一応LinuxはUbuntuならあるよ
やっぱりLinux勉強しとくべきかな?
2017/08/09(水) 01:08:37.25ID:bb8twRCP
クラークなら、windbgとかollydbgとか使えば? 汗もでるよ。
2017/08/09(水) 01:14:59.65ID:s1XZJ5Nh
どっちも持ってて試したけどイマイチ…
int 3のブレークポイントがある所でしか止まらないじゃん?
普通に最初からステップインでやれないものか…
だから>861でエミュ上での実行が良いって言ったんだよね
2017/08/09(水) 01:16:05.66ID:7zaXDMDr
>>897
出来るよ やり方は片山KUZUが見てるから教えない
2017/08/09(水) 01:19:35.53ID:s1XZJ5Nh
>>903
あっそう(^^;
2017/08/09(水) 01:35:22.34ID:s1XZJ5Nh
どうもフラグレジスタのTrap Flagというのをセットすることでシングルステップ実行が出来るらしい…
とても面倒臭いけども自分でコード書いて頑張りますわ
2017/08/09(水) 04:26:02.60ID:deJRgLks
何も知らないド素人同然なのになんでC言語すまたーとか名乗ってんの?
907デフォルトの名無しさん
垢版 |
2017/08/09(水) 05:25:27.23ID:J9yCSat5
てす
2017/08/09(水) 06:39:45.89ID:UBBon8Wk
巣股ー?
2017/08/09(水) 06:40:21.09ID:UBBon8Wk
どうせなら入れたい
2017/08/09(水) 09:13:43.09ID:VQlIa1Fm
gdbでstepiってやればできんじゃねえの?ググれば1分で分かりそうだけどw
911C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:32:53.54ID:s1XZJ5Nh
>>908
なんだー
>>910
だからLinuxじゃなくてwinなんだよww
Linuxは箱庭でしか動かんわ
2017/08/09(水) 11:33:36.39ID:s1XZJ5Nh
>>906
ますたーって読んでいいぞ
2017/08/09(水) 11:38:08.60ID:deJRgLks
Cなのにスマタさん。特権プレイモードってのがあるんですよ。Winの起動オプションをよく見てください。
2017/08/09(水) 11:38:48.46ID:vlyUfKCW
>>911
gccもgdbもWindowsで使える
915C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:41:46.58ID:s1XZJ5Nh
>>913
ほー有益な情報をありがとう
それだとどんなコマンドが使えるの?
916C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:42:09.25ID:s1XZJ5Nh
>>914
あ、マジで?
勉強不足だわ…
2017/08/09(水) 11:44:51.11ID:wdbwq19+
cp/m80で使えるgdbはどこ?
2017/08/09(水) 11:46:56.01ID:deJRgLks
どうやらCなのにスマタさんは童貞です。
919C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:57:25.81ID:s1XZJ5Nh
ちょっと調べてみたんだがgdbはソースがあって、-gオプションでデバッグ情報を生成したときのみ使えるコマンドじゃん
俺がデバッグしたいのはただの実行可能ファイルなんだ…
920デフォルトの名無しさん
垢版 |
2017/08/09(水) 12:02:30.41ID:J9yCSat5
>>848
案の定w
もう、とぼける位しかできねえボコボコだもんなおまえ

841に6.5.3.2と書いてあるのがどういう意味か
見当もつかない赤っ恥に気づきもしないからこそ
それでとぼけたつもりになっているんだろう

 浅 は か な や つ w
921デフォルトの名無しさん
垢版 |
2017/08/09(水) 12:22:51.13ID:6bCVBseb
>>919
行番号やデバッグシンボルが見られないだけで、gdb自体は使える
ollydbgやらにしても、任意の場所で止めたければ、ブレークポイント張れば済むだろ
922C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 12:37:30.55ID:s1XZJ5Nh
>>921
おお使えたわw
でも実行ファイル側が入力待ち状態なんだけどデバッガ操作できない…
当たり前かここら辺はどうやって追えばいいんだろうか
手前にブレークポイント作ってステップインかな?
2017/08/09(水) 12:39:16.06ID:LnmC5B+P
>>917
それはお前が作るんだよ
924デフォルトの名無しさん
垢版 |
2017/08/09(水) 12:42:14.46ID:J9yCSat5
いるよなー
GNUはハッカーのものだってことを忘れてるやつ
925C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 12:55:30.37ID:s1XZJ5Nh
最初っからステップインで実行したいんだけどシンボルテーブルが無いおかげでブレークポイント作れないからアドレス0x00400AFFにCCを入れて実行開始アドレスを0x00400AFFに書き換えたんだけどローダが読んでくれないみたい…
アドバイスありませんかね
2017/08/09(水) 13:13:43.97ID:FEqENNu4
gdbなら「b *アドレス」でブレーク貼れるでしょ
927C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 13:31:17.32ID:s1XZJ5Nh
>>926
どうもデバッグ情報がないから無理っぽい…?

で、仕方なく開始アドレスにバイナリエディタでCC入れて止めてみたんだけど、デバッグ情報がないせいで’s’コマンドが実行できない
”cannot find bounds of function."って出るんだけど、ググったらデバッグ情報がないとこうなるみたい
gdbじゃexeのシングルステップ実行は無理なんじゃ…

とりあえずネットで調べながら自分でシングルステップ実行するプログラム作ったんだけど、デバッグイベント起こらなくてWaitForDebugEvent関数で止まるwww
どうすりゃデバッグイベント起こせるんだよ
928C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 14:44:13.23ID:s1XZJ5Nh
しょぼいデバッガみたいのは動いたけどシングルステップ実行にならん…
なぜだ
929デフォルトの名無しさん
垢版 |
2017/08/09(水) 15:31:30.38ID:WoeKVDyE
なんで実行する必要があるんだ? 逆アセンブルしてソースコードを起こせばいいでしょ。
930C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 15:43:21.53ID:s1XZJ5Nh
>>929
そんな膨大なコードから目的の部分が見つかるわけないでしょ
2017/08/09(水) 16:28:28.13ID:7zaXDMDr
>>920
で、それがどうしたんだ?

> printf("Hello, C world!\n"); これがポインタだっ どやっ
手帳申請しろよ w
2017/08/09(水) 16:37:22.13ID:7zaXDMDr
>>920
この、ガイジは全然理解してない事を理解できずにガイジを再生産しようとしたやがる

> printf("Hello, C world!\n"); これがポインタだっ どやっ
これは、ポインタじゃなくてポインタ型
そしてそれは、ポインタと配列を区別出来ないガイジの本質

役所には盆休みはないから、休みのうちに手帳申請しとけよ
933デフォルトの名無しさん
垢版 |
2017/08/09(水) 16:46:18.30ID:J9yCSat5
> これは、ポインタじゃなくてポインタ型

失笑
「ポインタと配列を区別出来ないガイジの本質」を
そのままお返しだ、さあ受け取れアフォ
934デフォルトの名無しさん
垢版 |
2017/08/09(水) 16:49:08.32ID:J9yCSat5
こーゆー手合いは、こっちから攻め込まなくても
時間稼ぎしてれば勝手に自爆してくれるから楽だ
935C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 16:49:25.49ID:s1XZJ5Nh
機械語のシングルステップ実行に成功した
けどレジスタとか表示させるのにまたプログラム改変しなきゃなんない
面倒臭すぎる
2017/08/09(水) 16:51:48.67ID:zUFk2ZAi
配列も文字列リテラルも式の中の評価はポインタ型だからな
引数として評価されると本質は同じことになる
937デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:00:02.70ID:J9yCSat5
>>936
ちげーよ
assert(sizeof(const char *) == sizeof "string literal"); //abend
2017/08/09(水) 17:09:17.76ID:zUFk2ZAi
>>937
それは sizeof 演算子を適用したときの評価結果が異なっているだけだろ
型は同じでもオブジェクトそのものは別なのだから当たり前
2017/08/09(水) 17:11:40.05ID:PV13OBMN
関数の引数として、配列をまるまるスタックにつむには
struct で包むぐらい? typedef はポインタのままよね?
https://ideone.com/3MYBoM
940デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:17:25.80ID:J9yCSat5
>>938
おまえさんはこう言ったんだぜ
> 配列も文字列リテラルも式の中の評価はポインタ型だからな

sizeofつまりunary-expressionは紛れもなく式の1つだ
よって式の中で文字列リテラルがポインタ型というのは正しくない
2017/08/09(水) 17:25:24.78ID:YmDhq+hb
>>940
面倒くさい奴だな
正確には>>937の前者は型の評価結果、後者は式の評価結果だ
sizeof演算子は型名に適用する場合と式に適用する場合の二通りの使い方がある
演算子の動作も評価も異なる
2017/08/09(水) 17:28:25.59ID:PV13OBMN
前置,後置の ++ や -- は式じゃない ってことないし
>>936 は見てる状況を限定しすぎてないかな?
943デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:28:34.22ID:J9yCSat5
>>941
ほほー型の評価結果と式の評価結果とな
じゃあこれはどう説明する?
const char* ptr
assert(sizeof ptr == sizeof "string literal"); //abend
2017/08/09(水) 17:45:41.64ID:YmDhq+hb
>>943
それは式同士の評価結果の比較
ポインタ型のオブジェクト同士を比較してる
int型変数の場合、iと(i+1)のとき評価結果は異なるが、型は同じというのと同じ
945デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:49:19.66ID:J9yCSat5
>>944
えっ!?
assert(sizeof ptr == sizeof("string literal" + 1)); //pass
おまえさん、これが通るのは何が変わったというんだ?
2017/08/09(水) 19:31:37.93ID:7zaXDMDr
今日もガイジID:J9yCSat5は元気だな
947デフォルトの名無しさん
垢版 |
2017/08/09(水) 19:46:02.23ID:J9yCSat5
ん? ガイジの称号はお返ししただろ、ガイジ君
2017/08/09(水) 20:48:57.04ID:afYQHR9U
個人攻撃抜きでやれば、面白い事言っているんだけどなぁ:-P
2017/08/09(水) 20:58:23.97ID:+5xcelsT
糞下らん議論でスレを汚すな
2017/08/09(水) 21:07:56.63ID:8y5srZEo
クソ下らんことが141000レスも続いてんだぞ
14万だ
過去スレなんて見た日にゃ目がつぶれてそのまま気絶だ
2017/08/09(水) 21:09:32.99ID:7zaXDMDr
ガイジID:7zaXDMDrは必死になって、
> printf("Hello, C world!\n"); これがポインタだっ どやっ
これを否定するネタを探してきたらしいが
あてにならない(どうとでも取れる)JIS規格票は根拠にならんぞ

> A pointer is a variable that contains the address of another variable.
文字列は変数じゃない
従ってポインタじゃない これは神が決めた事
2017/08/09(水) 21:23:05.53ID:h3UNfnj7
綺麗な自己紹介
953デフォルトの名無しさん
垢版 |
2017/08/09(水) 21:52:53.42ID:NuBALnab
>>939
配列の時点でスタックに確保されてるけど
それとは別のスタック領域にコピーとして渡したいってことなら構造体かな
954デフォルトの名無しさん
垢版 |
2017/08/09(水) 22:15:20.36ID:aUjAPhEK
このスレは必ず絡んでくるやつが居るな
しかも延々とな

レスされて「この野郎!」と思った時には、深呼吸して落ち着こう。
そしてこうつぶやくのだ「相手にするなヨシオ」とな
955デフォルトの名無しさん
垢版 |
2017/08/09(水) 22:24:18.50ID:J9yCSat5
>>951
ははは、JISつまりISO/IECの和訳はおまえの敵か
自らの死刑宣告を読み上げていることに気付いているのか
2017/08/09(水) 22:26:15.56ID:vlyUfKCW
ワザとやっているんだろう、たぶん
957デフォルトの名無しさん
垢版 |
2017/08/09(水) 22:28:54.98ID:J9yCSat5
個人攻撃は、俺もそんなことしにきているわけじゃないんだが
喧嘩売ってくる馬鹿がいるとき、場合によるが応戦することもある
俺には9条みたいなふざけた縛りはない、それだけのことだ

技術的なことを言うたびにもれなく失笑させてくれる
民進党のブーメラン屋みたいなマゾ野郎がいるから、
ちょっとSっ気出ちまってるんだよ
2017/08/09(水) 22:35:40.33ID:vlyUfKCW
2chで正論言っても仕方がないよ
2017/08/10(木) 00:08:19.99ID:Ahb0l/jg
>>955
ガイジだからわからないんだろうけど、JISもISO/IECも「ポインタ」をいろいろな意味で使っている
ガイジ君はその中の都合の良いところだけ読んだだけ

神の定義と違って「ポインタとは〜〜」というのが無いって気付いて無いんだろうな ガイジだから

実は曖昧さを排除した定義があるがそれは、これだ
6.7.6 Declarators
Syntax
pointer:
* type-qualifier-list opt
* type-qualifier-list opt pointer

つまり規格票でいうポインタとは宣言の中にあらわれる「* [const]」の繰り返しだ w

ガイジ君が規格票を拠り所にした瞬間に
> printf("Hello, C world!\n"); これがポインタだっ どやっ
は、やっぱりお笑いだ わかったら明日手帳申請にいくんだぞ ガイジ
960C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/10(木) 00:15:28.54ID:Wh1e+mJZ
これただのBNFですやん
定義じゃなくて文法
961C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/10(木) 00:16:03.76ID:Wh1e+mJZ
あ、ごめんなんでもない
アスペかました
2017/08/10(木) 00:23:27.16ID:ukk4ErN5
うんざりしている人は、ガイジをNGにしよう
963C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/10(木) 00:27:01.19ID:Wh1e+mJZ
(俺のことじゃないよな…)(´・ω・`)
2017/08/10(木) 01:00:58.59ID:OxRJE4uH
まだやってんのかよ
2017/08/10(木) 01:23:36.79ID:eLvHxdUn
あガガイのガイ
2017/08/10(木) 01:49:11.94ID:7/H0Fazi
fflush(mevius.2ch.net/test/read.cgi/tech/1500293207/);
967デフォルトの名無しさん
垢版 |
2017/08/10(木) 08:25:53.10ID:oM3wka/1
>>959
英語でDeclaratorsって書いてあるの意味わかってる?
リテラルは宣言して使うものじゃないんで、
そこは全然関係ない

 ア フ ォ w w w
2017/08/10(木) 08:29:30.77ID:l1OSsrCe
>>953
そそ
複製を渡して
よばれた関数内での値の書き換えが呼び出し元に伝わらない形が気になってた
2017/08/10(木) 10:25:39.89ID:Ahb0l/jg
>>967
pointerの定義は規格票の中でこれしか無いって言ってるんだよ 他は定義せずに使っている

ガイジはどこまで言ってもガイジだな
2017/08/10(木) 10:35:59.74ID:QIhLvvh/
【問題】
ポインタとは何か
日本語で二行以内で書きなさい
971デフォルトの名無しさん
垢版 |
2017/08/10(木) 11:16:07.94ID:O+DiuWEO

2017/08/10(木) 11:43:42.10ID:Ez0zAyQ5
外人がまっさきに思い浮かべるポインタといえばコレ
http://i.imgur.com/nzuyDvh.jpg
973C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ
垢版 |
2017/08/10(木) 11:44:33.00ID:Wh1e+mJZ
メモリ上のアドレスを格納する変数
2017/08/10(木) 11:48:40.43ID:iih/xgGV
> メモリ上のアドレス

低学歴にもほとがあるな。
2017/08/10(木) 11:49:15.42ID:WglIhH8F
具体的に説明せずに煽るから荒れる
2017/08/10(木) 11:57:50.46ID:O+DiuWEO
>>973
よくある実装ではそうだろうけど必ずしもメモリ上のアドレスでなくてもよかったような?
例えば(何か特殊な事情がないとこんな実装はしないだろうけど)ファイルでもいいんだよね。
*p ってやった時にアクセスできればいいだけだから。そういうアクセスになるようにコンパイルされればそう動く。
2017/08/10(木) 12:23:05.86ID:BijEmwXz
【問題】
自己顕示とは何か
日本語で二行以内で書きなさい
2017/08/10(木) 12:26:02.90ID:Nr0tZQ0b
>>970
オレたちの世代はこれだろ!
http://blog-imgs-51.fc2.com/d/o/n/donboolacoo/PP_20130414161829s.jpg
2017/08/10(木) 12:45:43.96ID:Wh1e+mJZ
>>974
学歴?
>>975
いや、ポインタ自体はただのアドレスだよ
厳密に言えば論理アドレス(物理アドレスでは無い)
ファイルってのは構造体に過ぎないわけで、windowsならFILE構造体ってのが用意されてる
だから、FILE *fp;と書けば、fpはただのアドレスだけど、その指す先はFILE構造体のサイズ分のメモリ領域となる
2017/08/10(木) 12:46:01.19ID:Wh1e+mJZ
ミスった>>976だった
2017/08/10(木) 12:59:59.40ID:hk9jSOXL
>>972
これでしょ
http://www.koinuno-heya.com/syurui/hagyou/images/pointer1.jpg
そっちのポインターは使わない人も多いし
982デフォルトの名無しさん
垢版 |
2017/08/10(木) 14:11:24.78ID:oM3wka/1
>>969
ポインタとは何かという「定義」と、
宣言のうち実体を作る「定義」を混同しているわけね

 ア フ ォ w w w
2017/08/10(木) 15:54:14.88ID:PuWYnGyf
ahoとは何かと言う定義と実装された目前のahoの違い
&でアドレス取ろうとしたら住所不定であったでござるw
984デフォルトの名無しさん
垢版 |
2017/08/10(木) 16:21:59.47ID:oM3wka/1
それはlvalueを除くvalue of an expressionだね
&969; //erroneous
2017/08/10(木) 16:51:40.50ID:R5q9oGzu
長いバトルだのう

>>629
サラっと嘘吐いてないかい?
2017/08/10(木) 16:53:00.40ID:R5q9oGzu
失礼した
茶碗持つね
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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