X



C言語なら俺に聞け 143
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん (ワッチョイ b375-rVGZ)
垢版 |
2017/10/27(金) 21:28:08.20ID:pAogLeJi0
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言語なら俺に聞け 142
http://mevius.2ch.net/test/read.cgi/tech/1502364083/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0811デフォルトの名無しさん (アウアウウー Sac3-qGtq)
垢版 |
2017/12/14(木) 11:15:27.13ID:lae2KYT0a
>>806
片山さんチーッス!
後ほど報告しますね

>>809
FE試験でCASLを福島本で少々もちろん落ちました春再戦はCで挑みたく…
ほかPython本チラ見と開発環境整え中に他の試験のため頓挫

覚えたいが独学でグイグイいけるモチベもなく(あればここで泣きついてないw)誰かにゆるい階段のお膳立てをしてもらい登ってみようかと。これでだめならセンス無しでITから撤退しますw
0817デフォルトの名無しさん (エーイモ SE52-x5Rz)
垢版 |
2017/12/14(木) 13:39:55.18ID:viw49ZxRE
C99とかC14とかCにもいろいろ種類があるそうですが
特定の種類で書かれたソースコードであるかチェックしたいのでsouiu
lint toolってありませんか?
0819デフォルトの名無しさん (ワッチョイ 926e-zS+j)
垢版 |
2017/12/14(木) 16:12:02.98ID:fPDEs5uN0
C14はC++14を勘違いしたんだろうね
Cの種類は、K&R, C90(C89), C99, C11の4つが主要バージョン
主要でないバージョンというと、primeval CとかC84などがある
C90をC89と言ったりするのは、ISO/IEC9899:1990がANSI X3.159-1989を追認する内容だからだ
日本語版のJIS X3010:2003はC99の直訳
0820デフォルトの名無しさん (アウアウカー Sa6f-kaKc)
垢版 |
2017/12/14(木) 16:29:20.24ID:8Y/Mk4+4a
>>803
いやほら乱数ってハードウェア利用せずに計算だけでやる場合は処理を複雑にしても無意味なことあるじゃない。
0821デフォルトの名無しさん (アウアウカー Sa6f-kaKc)
垢版 |
2017/12/14(木) 16:31:27.48ID:8Y/Mk4+4a
>>810
懐かしいのがあるなあ。

でもアセンブラできるなら覚えるの早いかも。
0827デフォルトの名無しさん (ワッチョイ 926e-zS+j)
垢版 |
2017/12/14(木) 17:06:32.65ID:fPDEs5uN0
putsの使いにくさときたらアンタ・・
0830デフォルトの名無しさん (ワッチョイ dee7-hnOy)
垢版 |
2017/12/14(木) 20:08:02.01ID:ixe7nO7C0
putsは使ってないな一行読み込みだしその後の文字加工がめんどくさいからprintfで済ましちゃうな
0831デフォルトの名無しさん (ワッチョイ 5e8a-F+rF)
垢版 |
2017/12/14(木) 20:15:34.79ID:wDiGnNfx0
初心者にprintfを教えると、信頼の出来ない文字列を第一引数として渡す事故が
起きかねないので教育上よろしくないのは常識

[MQ]Z はアホの代名詞
0832デフォルトの名無しさん (アウアウカー Sa6f-kaKc)
垢版 |
2017/12/14(木) 20:26:36.32ID:kKgdz6jma
printf("%s\n", "うふ");
0835デフォルトの名無しさん (ブーイモ MM63-VZi2)
垢版 |
2017/12/14(木) 21:58:51.30ID:q6i5/Nc7M
プログラミング初心者です

struct hoge *tmp = NULL;
以下うろ覚え
tmp->hage = xxxxx;

最近上記のようなコードに出会いました
明らかにNULLなのにアロー演算子で参照してもぬるぽしないことってあるんでしょうか?
0837デフォルトの名無しさん (ワッチョイ 772b-5suJ)
垢版 |
2017/12/14(木) 22:16:14.39ID:a/3Oigfw0
tmp->hage = xxxxx は、0番地にアクセスしてるわけじゃなくて
0 + hageのオフセット番地にアクセスしてるわけだから、
hageのオフセット番地が有効なメモリまでズレてれば
ヌルぽしないんじゃない?
0843デフォルトの名無しさん (ワッチョイ 1f9f-iA8U)
垢版 |
2017/12/14(木) 22:37:16.44ID:ZN3qJoQh0
>>838
> 組み込みならゼロ番地付近をアクセスするためにありうるかもな。
これで当たりだと思うけど、
そもそも組み込み(≒MMU無し)ならどこアクセスしてもヌルポしないがな。
0845デフォルトの名無しさん (ワッチョイ 12b3-jdna)
垢版 |
2017/12/14(木) 22:47:13.04ID:JlwKPeYd0
>>843
> そもそも組み込み(≒MMU無し)ならどこアクセスしてもヌルポしないがな。
そんなもん機器による
ROM領域に書き込んだりなにも割り当てられてない領域を読み出したら例外を発生させるとか普通にある
0850デフォルトの名無しさん (ワッチョイ 926e-zS+j)
垢版 |
2017/12/15(金) 05:27:47.99ID:GBd6F7vt0
スタックポインタの初期値だね
0852デフォルトの名無しさん (ドコグロ MMb3-jdna)
垢版 |
2017/12/15(金) 06:58:51.04ID:suRmrR/jM
>>849
> ゆとり死ね
指摘されたら逆ギレとかどっちがゆとりだよ w

> つか組み込みの0番地なら普通にアクセスできるほうが多いと思うが。
組み込みなんてピンきりだから普通にとか言っても意味ない
そもそも
> 組み込み(≒MMU無し)
の認識がおかしい

> ARMだとベクタのようだし。
ARMもピンきりでMMU持ってる奴も多いからARMだから0番地アクセスできるとか無知すぎる
0853デフォルトの名無しさん (ワッチョイ 5e8a-F+rF)
垢版 |
2017/12/15(金) 07:02:18.81ID:yuhdgz4g0
>>848
セグメントフォルト、バスエラーは同期例外だ
非同期(タイムアウト)でバスエラーなんか起きたら困る

知ったか乙
0854デフォルトの名無しさん (スップ Sd52-cDjN)
垢版 |
2017/12/15(金) 07:14:46.17ID:soFbbFtpd
C言語じゃないけど聞いて良いですか(´;ω;`)
バッチ利用して設定ファイル書き換えたい

1. ユーザーに入力してもらう
2. iniの値をそれで上書き

x.ini
AAA=1
BBB=2
CCC=3

AAA=1
BBB=192.168.0.1
CCC=3

キーはBBBで固定
設定値が少ないから一度全部読み込んで一行ずつtmpに書き込んで〜ってのも問題ない
一行ずつ読み込んで別ファイルに出力とかはできたんだけど
BBBなら〜って判別ができないです
0855デフォルトの名無しさん (ワッチョイ 5e8a-F+rF)
垢版 |
2017/12/15(金) 07:35:31.85ID:yuhdgz4g0
>>854
>C言語じゃないけど聞いて良いですか(´;ω;`)
ダメ
0857デフォルトの名無しさん (ドコグロ MM97-jdna)
垢版 |
2017/12/15(金) 08:14:33.28ID:FCwL/bM6M
>>853
恥の上塗り乙
68Kだと普通の設計だぞ
https://www.slac.stanford.edu/BFROOT/www/Detector/DAQ/Infrastructure/Maint/177aih.pdf
あとバスエラーの定義はプロセッサによって異なるからプロセッサも限定せずに
> セグメントフォルト、バスエラーは同期例外だ
とか書くと知ったかがばれるので注意しろよ w
0858デフォルトの名無しさん (ドコグロ MM97-jdna)
垢版 |
2017/12/15(金) 08:20:34.53ID:FCwL/bM6M
>>854
C言語でやりたいならここでいいけど、バッチでやりたいならこっち
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1489207631/

あとバッチはその手の文字列操作があまり得意でないので個人的にははPowerShellとか使った方が楽だと思う
【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1480109402/
0859デフォルトの名無しさん (ワッチョイ 926e-zS+j)
垢版 |
2017/12/15(金) 10:39:34.38ID:GBd6F7vt0
68kでのバスエラーとは/BERRがアサートされることで
何をセンスして/BERRをぶっ叩くかは基板次第だな
0862デフォルトの名無しさん (ワッチョイ 926e-zS+j)
垢版 |
2017/12/15(金) 12:46:09.63ID:GBd6F7vt0
longjmpやC++のthrowのような例外と割り込みは違うが
ソフトウエア割り込みだの記憶保護例外だのは割り込みと同列なもので
CPUのマニュアルでも同じ章に書いてある
0864デフォルトの名無しさん (ワッチョイ 5e8a-F+rF)
垢版 |
2017/12/15(金) 13:49:05.09ID:yuhdgz4g0
>>857
この文脈ではメモリアクセスに伴って発生バスエラーであり、それが非同期って事はアスセスして読めた後で、やっぱさっきのなし、ノーカン、ノーカン

って事だぞ お前は班長か?
0866デフォルトの名無しさん (ワッチョイ 5e8a-F+rF)
垢版 |
2017/12/15(金) 14:30:39.93ID:yuhdgz4g0
>>865
理解してない奴は、混乱の元だから割り込んで来ないように
0870デフォルトの名無しさん (ワッチョイ 926e-zS+j)
垢版 |
2017/12/15(金) 17:25:38.74ID:GBd6F7vt0
0xffffffff番地でもいいはずだね
要は、Cで合法的に定義されたオブジェクトが決して含まないアドレスを
1つ決めごと作っておいてそれを空ポインタということにしようということと
規格合致処理系はそれを必ず決めておかなければならないということ
C以外のたとえばアセンブラで定義されたオブジェクトまでがその規則に従うとは限らないし
そういうオブジェクトをCで扱えてはならないとまでは言ってない
あくまで自己責任でやる限り余計な邪魔立てはしない
0871デフォルトの名無しさん (ドコグロ MMaf-9pXP)
垢版 |
2017/12/15(金) 20:55:15.86ID:eSUvZEm2M
ポインタはポインタであってアドレスではない
けど中途半端に知ってるとポインタとアドレスがイコールと思い込んでしまう
ヌルポインタはアドレスで説明できないポインタの例だね
0872デフォルトの名無しさん (ササクッテロル Spc7-e1v7)
垢版 |
2017/12/15(金) 20:57:06.91ID:wYljbLzIp
バスエラーってのは、あらかじめ決めた領域以外をアクセスしょうとしたら発生するのであって、読んだ後にここ読めないからなんて動作はしない。
むしろ決めて無い場合は幾らでも読み書き出来てしまう。例えそれが嘘でも虚構でもな。
後からノーカンなんてならない。
0876デフォルトの名無しさん (ワッチョイ 5e8a-F+rF)
垢版 |
2017/12/15(金) 21:26:18.69ID:yuhdgz4g0
>>872
わかってない奴は割り込むなって言っただろ
痛々しいぞ
0877デフォルトの名無しさん (ドコグロ MM97-jdna)
垢版 |
2017/12/15(金) 21:34:47.34ID:FCwL/bM6M
>>876
お前がわかってないだけだろ w
68K の話ならデータが読めると言うのは DTACK のアサートで示される
その後に BERR をアサートしても受け付けなかったと思う
(そんなアホな設計はしたことないから本当にそうかどうかは試してないけど)
そもそも BERR は非同期じゃないからお前が初めから頓珍漢なだけ
0884デフォルトの名無しさん (ワッチョイ 1f9f-iA8U)
垢版 |
2017/12/15(金) 22:47:47.28ID:QRFEcBGB0
>>852
ゆとりマジで死ね
韓国人も死ね

お前らはそういう所がいけない。俺は逆ギレしているのではなく、単にキレてるだけだ。
お前らはそうやって常に話をすり替え、被害者ポジションを確保する癖があるが、それは根本的に間違ってる。
そもそも、ここにはお前らより知識のある奴が沢山居るんだから、お前らの聞きかじりで回答する必要はない。
話が余計におかしくなってるだろ。

話を>>841に対する回答に戻すと、841の話しぶりからして、
俺は以下を補足した方がいいと思ったから>>843を投稿したんだよ。
1. 841の言う「ヌルポ」はOSがMMUで捕まえるヌルポである。
2. >>838の言う「組み込み」はMMUがない場合を指している。
3. 838の言う「ゼロ番地付近をアクセス」はOS+MMUがない場合を想定している。
4. 従って838のケースでは841の想定するヌルポは発生しない。
というのを伝えるために書いたんだ。
それをお前は知ったかをしたくて、「MMUなら俺も知ってる!」と勝手に食いついてきただけ。
読む限り、お前は例外がどう動くのか理解できてないと分かるが、無知なままでいろ。
俺は841を助けようとしたのであって、韓国人とゆとりは死ねとしか思ってないから。

VBRを変更する場合、確かに0番地付近を構造体アクセスして転記するんだよ。
838はこれに気づいた、そしてそれを伝えた。
俺は841が「0番地アクセス=ヌルポ」と思っているっぽいので、(これは通常のOS+MMUならそうだが)
それとは違うぞと分かるように補足した。
それに知ったかゆとりが食いついてきただけ。

> プログラミング初心者です (>>835)
という点からしても、838で当たりだろう。
VBRを変更するならかなり初期で対応するので、初心者でも目に付く場所に記述される。
0885デフォルトの名無しさん (ワッチョイ ef9f-v37J)
垢版 |
2017/12/15(金) 23:13:36.36ID:i/+5VHc30
>>835
それをコンパイルするコンパイラの仕様とそれを実行するマシンアーキテクチャによって変わる。
0886デフォルトの名無しさん (ワッチョイ ef9f-v37J)
垢版 |
2017/12/15(金) 23:15:47.32ID:i/+5VHc30
OSによっても変わるかな。
まあしかしOSそのもののソースコードならそう書いて正常動作したとしても特におかしくないかな。
0895デフォルトの名無しさん (ワッチョイ 926e-zS+j)
垢版 |
2017/12/16(土) 05:42:42.76ID:V7dZrSJp0
1点、気になるのがNULLと書いていたことだ
0番地にアクセスすることを意図しているコードは
struct hoge *tmp = NULL; ではなく
struct hoge *tmp = (struct hoge *)0; と書くだろう
思うに、単にtmpへの代入を忘れただけではないか?
そういうポカミスを多発するどんくさいやつほど
「変数は必ず初期化」に固執する
0897デフォルトの名無しさん (ワッチョイ 1f9f-iA8U)
垢版 |
2017/12/16(土) 08:59:26.34ID:TBmZZU6f0
>>893
ゆとり死ね
韓国人死ね

俺が読めといっているのは>>884のことだ馬鹿タレ
どうせお前らは日本語が不自由で3行以上は読めないから意味が分からないのだろうが
お前らが迷惑行為を働くことに対して俺はキレてるんだよ


>>895
環境によってはwarningが出る。VC++とか。
個人的には意味ないとも思うが。
レス数が900を超えています。1000を超えると表示できなくなるよ。

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