1 名前:デフォルトの名無しさん [2021/06/28(月) 11:22:51.50 ID:so+vl3vs0.net] !extend:checked:vvvvv:1000:512 (新スレ立ての際上記コマンドを2行書き込んでください) 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言語なら俺に聞け 156 https://mevius.5ch.net/test/read.cgi/tech/1601271690/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
856 名前:デフォルトの名無しさん mailto:sage [2021/11/14(日) 13:25:42.20 ID:EUNDgDvQ0.net] >>843 ・E_OKで成功、それ以外でエラー ・0以上で成功、負でエラー ・常に成功 ・void ・なんかのポインタで成功、NULLでエラー 無理やり分類したらこんな感じ?
857 名前:デフォルトの名無しさん mailto:sage [2021/11/14(日) 13:59:30.15 ID:E00roTgyF.net] >>834-835 個人的には int main() で引数無い状況ならOSのことは想定してないんだろうから void main() で良いだろって思う 組み込みとか
858 名前:ハノン mailto:sage [2021/11/14(日) 14:07:31.05 ID:5CSGBVhH0.net] >>846 リンクされるスタートアップが返り値の存在を前提にしているというのに、main() ごときが返り値の有無を指定するなんて傲慢じゃないですかぁぁぁぁ!
859 名前:はちみつ餃子 mailto:sage [2021/11/14(日) 15:32:15.51 ID:A4GQ1/1N0.net] main の型を変則的にするくらいなら main をエントリーポイントにしない (エントリーポイントの関数を別の名前にする) ほうが好ましいと個人的には思う。 言語仕様の外 (処理系定義) で定義された方法を使おうとしていることがわかりやすいので。
860 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 08:57:20.76 ID:ELwWgVHxd.net] >>846 俺もそう思う
861 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 08:59:15.64 ID:ELwWgVHxd.net] 実行開始点は◯◯関数とドキュメントのどこに書こうか悩まずに済むならそうしたい
862 名前:834 mailto:sage [2021/11/15(月) 18:18:16.98 ID:oeHKaDHh0.net] ただの慣例なんですね、ご回答ありがとうございました。
863 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 19:21:59.60 ID:BFf+frEV0.net] C言語初心者です。sleepを使って一文字ずつ 2秒ごとに表示したいのですが Windowsの端末だとうまくいくのですが、 Ubuntuだと8秒後にまとめてHelloと一度に 表示されてしまいます。ubuntuでも windowsのように一文字ずつ表示させたいのですが できないのでしょうか?コンパイラはGCCです。 #include <stdio.h> #include <unistd.h> int main (){ printf("H"); sleep(2); printf("e"); sleep(2); printf("l"); sleep(2); printf("l"); sleep(2); printf("o\n"); return 0; }
864 名前:ハノン mailto:sage [2021/11/15(月) 19:27:49.92 ID:a976/UsH0.net] >>852 printf('A'); fflush(stdout); はいかが?
865 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 19:28:12.24 ID:Xr7xQZWT0.net] printfとsleepの間に↓ fflush(stdout);
866 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 19:45:10.08 ID:BFf+frEV0.net] >>853 >>854 ありがとうございます。うまくいきました。 fflushの使い方調べてみます。
867 名前:はちみつ餃子 mailto:sage [2021/11/15(月) 23:18:43.35 ID:LEZCO+bp0.net] >>852 どちらの挙動も言語仕様的にはアリ。 ストリームが対話型装置を参照していると判定できて、かつその場合に限り完全バッファリングすることになっていて、 逆に言えば対話型装置 (この場合はコンソール) に繋がっているときはラインバッファリングかもしれないし、 バッファリング無しかもしれない。 フラッシュを明示的に指示するのでもよいが、 setvbuf 関数でバッファリングをしないように設定することもできる。
868 名前:はちみつ餃子 mailto:sage [2021/11/15(月) 23:20:10.09 ID:LEZCO+bp0.net] >>856 書き間違えた。 対話型装置を参照していると判定 ↓ 対話型装置を参照していないと判定
869 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 23:52:40.37 ID:9q/xF8xE0.net] 低レベルの出力関数使ってバッファリングを回避してみる、とか
870 名前:デフォルトの名無しさん [2021/11/16(火) 21:41:05.99 ID:vUDwceGd0.net] lintの無い事い今更気付いたのだが、代替何?
871 名前:デフォルトの名無しさん mailto:sage [2021/11/16(火) 23:22:15.69 ID:hcv5mNbC0.net] >>859 clion
872 名前:デフォルトの名無しさん [2021/11/17(水) 02:29:57.06 ID:+JwFzM8Ra.net] >>851 int main(){ int a=0; return a; } と void main(){ int a=0; } をそれぞれ asm 付きでコンパイルして比較してみ 判ったら次は a=0; を inline にしてみ
873 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 16:44:53.52 ID:802yK0wSK.net] >>859 splint
874 名前:はちみつ餃子 mailto:sage [2021/11/17(水) 17:37:06.80 ID:R6z6I7690.net] >>859 コンパイラが細かくチェックするようになったから lint の出番がなくなった。 gcc や clang なら -fsyntax-only オプションを付けると文法のチェックまでで段階を止める。 必要な警告オプションを付けた上でこれを使えば古い時代の lint より厳しいくらいだと思う。 (ちなみに -Wall や -Wextra を付けても全ての警告が有効になるわけではない。)
875 名前:ハノン mailto:sage [2021/11/17(水) 19:11:13.17 ID:Kdlo9yNJ0.net] >>863 >(ちなみに -Wall や -Wextra を付けても全ての警告が有効になるわけではない。) 私は -W -Wall で妥協します
876 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 20:49:44.01 ID:U3uLHNTwd.net] 最近のコンパイラはミスタイプすると 「contが見つかりません、もしかしてcountのことですか?」みたいなことまで言ってくるもんなあ グーグルかよ
877 名前:ハノン mailto:sage [2021/11/18(木) 00:26:37.80 ID:MiW85JEr0.net] >>865 そこは読まない…
878 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 00:32:41.46 ID:HOoxCKRv0.net] 入門サイトで勉強しててこんな感じのコードがエラーになって { int a = 100; printf("数値:%d アドレス:%x", a, &a); } gccのエラーをコピペで検索すると、&aはポインタだから、アドレス:%pだと回答がヒット。 コンパイラやバージョンによって挙動が違うのでしょうか?
879 名前:はちみつ餃子 mailto:sage [2021/11/18(木) 00:55:33.69 ID:ku1GvVZm0.net] >>867 言語仕様で未規定や処理系定義としている場合があって、 そういうのは処理系や実行環境の都合に合わせて決めていいことになってる。 そして「未定義」とされている場合は何が起こってもいいことになってるので、 暴走するかもしれないし、 OS が止めてくれるかもしれないし、しれっと意味不明の結果を出力するかもしれない。 たぶんそれは未定義に該当すると思う。 C の可変長引数は型チェックをゆるゆるにすることで実現されていて、 処理系の内実をわかってる人は言語仕様上の保証がない (けど実態としては問題がない) コードを書くのは普通にある。 パソコンで一般的に使われている呼び出し規約 (関数を呼出す機械語レベルの挙動の規則) だと ポインタと (レジスタの幅以下の大きさの) 整数は同じ方法で渡すので問題にならないんだけど、 言語仕様では保証がない。 可変長引数の型チェックはゆるゆるなんだけど printf は頻出するからコンパイラが特別扱いで 少しチェックを厳しくしているのでエラーになることもあったりする。 まあ基本的には保証されてないのでやらないほうがいいよ。
880 名前:867 mailto:sage [2021/11/18(木) 01:52:34.49 ID:HOoxCKRv0.net] >>868 詳しい説明ありがとうございます。 実際にターミナルに出力されたのはerrorではなくwarningで、試したらそのままでも実行できていました。 用心しながら学習続けていこうと思います。
881 名前:はちみつ餃子 mailto:sage [2021/11/18(木) 02:23:30.05 ID:ku1GvVZm0.net] 逆に完全に言語仕様に沿っていても警告になる場合もあるし、 (基本的には警告が出ないようなコードのほうが綺麗ではあるが) 言語仕様的に OK なのか NG なのか、 とりあえず自分の実行環境で OK なのか NG なのかを正確に把握するのはかなり分かり難いと思う。
882 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 02:53:45.75 ID:SHW/gJRC0.net] >>867 まず、エラーと警告の違いを 次に、エラーとill-formedの違いを 憶えよう
883 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 10:38:56.92 ID:7kNuqccRd.net] 0から100までの整数のうち、17の倍数となる数の合計を求め、かつ途中の加算処理を出力するプログラムをつくったのですが、うまくいきません。
884 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 10:39:42.31 ID:7kNuqccRd.net] うまくいかないのは過程を出力する処理の過程なのですが、どうしたらよいですか。 コードは以下です。 #include <stdio.h> int main() { int i,sum=0; for(i=17; i<=100; i=i+17) { sum=sum+i; printf("途中計算→%d\n", sum); } printf("合計=%d\n",sum); return 0; }
885 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 10:49:25.32 ID:SHW/gJRC0.net] ダッサいループ書いてないで公式立てたら?
886 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 11:10:34.71 ID:R1PabgqQ0.net] >>873 「17の倍数」とは「17で割った余りが0」のこと Cで割った余りを計算する演算子は「%」
887 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 11:14:20.02 ID:SHW/gJRC0.net] 17から開始で17ずつ増やしてるだろ 0は17の倍数じゃないそうだが
888 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 11:32:07.83 ID:RYwZiL190.net] >>873 何がどううまく行かないの?あってそうに見えるけど
889 名前:デフォルトの名無しさん [2021/11/18(木) 14:40:44.78 ID:/He/baLSF.net] >>869 昔のソース(コンパイラ)は %x で通るのが多い 今から勉強するなら %p の方が良いし新しい教科書使った方が良い
890 名前:デフォルトの名無しさん [2021/11/18(木) 14:45:21.17 ID:/He/baLSF.net] >>873 printf("途中計算→%d, %d, %d\n", i / 17, i, sum);
891 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 14:45:34.58 ID:/He/baLSF.net] >>823 https://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/LU/PartialPivLU.h https://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/LU/FullPivLU.h
892 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 18:35:31.06 ID:CfNf7HSld.net] >>867 伝統的にポインタはintと同じメモリサイズなので昔はそう書いてた そうなんだよな最近のコンパイラはprintfのフォーマットと引数をチェックしてるんだよな もう慣れたが最初不思議な気がした 組み込みだと自分でprintf関数作ったり(標準だと使わない機能が多くて重すぎるから)するけどそんな時はどうなるのだろうとか
893 名前:デフォルトの名無しさん [2021/11/19(金) 00:07:30.77 ID:tkL53aTR0.net] >>872 ( ´_ゝ`)フーン
894 名前:デフォルトの名無しさん [2021/11/19(金) 00:11:12.00 ID:tkL53aTR0.net] >>873 それでいいのでは?
895 名前:はちみつ餃子 mailto:sage [2021/11/19(金) 00:18:54.40 ID:bln5kEpJ0.net] 64 ビット環境では LP64 や LLP64 (int とポインタの大きさが違う) が標準的になってしまったから 古いコードをそのまま持ってきたら通らないってことは割とよくあるよね。
896 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 00:37:21.78 ID:tkL53aTR0.net] long と int (及び char *)を全て32bitとして扱っていて、辛うじてコンパイルは通るが決してまともに動かない プログラムがあったので、しょうがないから gcc の -m32 と32bit用ライブラリで何とかした。何せ量が膨大で、 人力で直してたら多分何人か死んでたと思う。
897 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 05:44:49.46 ID:6rl9yCzd0.net] 俺が出向いた、とあるクライアントでは人海戦術してた
898 名前:デフォルトの名無しさん [2021/11/19(金) 10:15:17.36 ID:eyeX0xyMF.net] long が int に追い越されたのかと思った
899 名前:ハノン mailto:sage [2021/11/20(土) 20:09:18.64 ID:NniTuIFb0.net] >>884-886 far near 修飾があたりまえな世界から来た私にとっては、なんで今更なことしているの?と疑問におもっていました
900 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 20:11:58.21 ID:LAgO+4EW0.net] そういえばhageモデルなんてあったな
901 名前:ハノン mailto:sage [2021/11/20(土) 21:32:53.52 ID:NniTuIFb0.net] >>889 hage モデル、もとい huge モデルにはバグがある、とのもっぱらの噂でしたが実際どうだったんでしょうか…
902 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 22:42:01.83 ID:PPXRLNML0.net] ていうか、8086のHugeみたいなものはバグ作り込んでしまいそうで怖いよな。ポインタ絡みで。 違う値が同じアドレスになる事あるし。
903 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 22:45:40.83 ID:LAgO+4EW0.net] 当時300kを越える配列を処理したくて使いました 使うというか、複数のセグメントに分割して割り当て、 自前で配列インデックスを計算してアクセスしただけですが
904 名前:はちみつ餃子 mailto:sage [2021/11/21(日) 00:46:36.95 ID:mkw0m2hl0.net] 違う場所が同じ値になるような場合があっても言語仕様が保証している範囲ではちゃんと仕様通りだったりするんだよな。 というより保証が可能な範囲をうまいこと言語仕様にまとめたって感じなんだと思う。
905 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 08:41:13.51 ID:uokK0Aao0.net] >>888 Windowsが64bit主流になっていく頃にも一騒動あったよ
906 名前:ハノン mailto:sage [2021/11/21(日) 12:42:55.44 ID:ODZrEgDk0.net] >>891 さらに年寄りの繰言を続けますが、 >違う値が同じアドレスになる事あるし。 というのは far ポインタでも同じです、far と hage じゃなかった huge の違いは、オフセットの繰り上がりがセグメントに反映されるかされないか 私は余計なことはしてほしくないので、繰り上がりがない far を愛用していました、huge はいまいち信用できませんでした
907 名前:ハノン mailto:sage [2021/11/21(日) 12:44:00.07 ID:ODZrEgDk0.net] >>894 それ、今のことなのでは?>>884-886
908 名前:デフォルトの名無しさん mailto:sage [2021/12/01(水) 02:11:41.33 ID:AqcF5lvQ0.net] 構造体のパディングの値って未規定ですか?
909 名前:ハノン mailto:sage [2021/12/01(水) 02:24:50.55 ID:VU8XmWVx0.net] >>897 パディングの状況に依存するコードを書くのはよろしくない、というのが一般論だったかと ファイル入出力で問題になりますが、私はもう、ちまちま fwrite() fread() で「1 byte ずつ」やるしかない、とまで諦めています 環境がバッファリングしてくれますし
910 名前:はちみつ餃子 mailto:sage [2021/12/01(水) 02:53:05.18 ID:Y6HO3vrm0.net] 未規定であるしパディングの大きさに依存するようなコードは避けるのが行儀のよいコードであるのは間違いないけど、 対象にしている処理系での挙動がはっきりしていて移植の可能性もない (または移植のコストをかける覚悟がある) のなら依存するコードを書くことはそれなりにあると思う。 マクロで切り分けて configure (とか cmake とかのメタビルドツール) で各アーキテクチャの都合に対処することは可能だし。 良くはない。 良くはないがそういう良くないことも出来るのが C ってもんなわけで。
911 名前:デフォルトの名無しさん mailto:sage [2021/12/01(水) 11:58:37.67 ID:Jc7L6V7f0.net] 昔、構造体の扱いで失敗した事がある あるサイトで構造体を引数にして削除処理を行う関数を提供されたが、 実際に使おうとすると引数エラーを返されてしまい途方に暮れた 構造体メンバーには仕様書通りに必要な値をセットしている しばらくして原因が分かった 関数側は引数が正しくセットされているかを、 処理対象の領域に格納されている同一の構造体と比較しチェックしていた その比較に memcmp を使っていた 呼び出すこちら側は、構造体を自動変数として領域確保していた
912 名前:デフォルトの名無しさん mailto:sage [2021/12/01(水) 19:41:43.68 ID:Dt37aX+70.net] 構造体の比較をmemcmpでやるの本当にバッドプラクティスだと思うわ 横着せずに比較関数作れと
913 名前:デフォルトの名無しさん mailto:sage [2021/12/01(水) 20:37:38.80 ID:sYF3bwwtM.net] 横着したくなるというか識別子増やすの躊躇させる言語仕様が招く面倒ね メンバメソッド系はオブ臭く棲み分けに反し今更入れる必要ないと思うけど 一層にぶち撒かず妥当なルールでツール類で拾いやすいサポートネームスペース括りみたいなのがあれば void bossy(struct *a); bool bossy.supporter(struct const*a);
914 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 03:58:26.91 ID:boATToTk0.net] 素直にC++使っとけ
915 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 15:46:31.22 ID:nsbZ2n490.net] 若者のc言語離れ
916 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 15:56:03.63 ID:NxRkNBX1d.net] バブルの頃に努力?修練?ぎやはははだっせー と言ってたのが結局、日本の致命傷になっちまったな それを今まだ言ってる堀江みたいなぶっ飛んだキチガイもいるし どーすんだこれ
917 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 16:51:51.31 ID:BMPRSKoA0.net] >>905 何の話? 日本は米国植民地なので戦後から終わってますよ…
918 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 18:59:50.96 ID:boATToTk0.net] 植民地支配がどんなに恐ろしいことか知らないようだな 朝鮮半島に先進国並みのインフラを作ったり 狭い島国に世界最大のメガロポリスができるのと フィリピンのバナナ農家が受けている仕打ちの違いわかる?
919 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 19:37:18.40 ID:+Bf3UEhm0.net] 君はここに来なくて良いから、その代わりに 半島に行って自慢して感謝されてこいよ
920 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 19:51:25.65 ID:boATToTk0.net] わかるかなぁ、わかんねぇだろうなぁ
921 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 21:23:20.96 ID:bRKtguKwM.net] c++のネームスペースさんはadl とかテンプレート混じりでsfiane とか 使うつもりがなくても簡単に誤爆する罠のせいで妥当な実装ではないね
922 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 21:28:04.80 ID:BMPRSKoA0.net] >>909 アングロサクソンのやることはえぐいですね… でも半島の話はやめたほうがいいですよ、むしろ台湾の話をしたほうがいい(親中派だったら無理かもね)
923 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 21:44:47.29 ID:boATToTk0.net] >>910 うわー 整然と整列された弾薬を蹴飛ばして地雷原と言っちゃう手合いか
924 名前:mikuRTX mailto:sage [2021/12/03(金) 20:20:27.18 ID:JS/BWVJ20.net BE:871585708-2BP(0)] https://img.5ch.net/ico/2-1.gif c言語でGUIの作り方教えて
925 名前:デフォルトの名無しさん mailto:sage [2021/12/03(金) 21:09:10.77 ID:qejwogbL0.net] >>913 www.kumei.ne.jp/c_lang/index_sdk.html
926 名前:デフォルトの名無しさん mailto:sage [2021/12/03(金) 22:17:35.13 ID:4DnkKvZO0.net] >>914 WIndowsAPIはC言語で使うのが正解でC++では使わないっというのを別スレで見たんですが、そうなの?
927 名前:デフォルトの名無しさん mailto:sage [2021/12/03(金) 22:43:36.48 ID:qIm8KpH10.net] C++でも使う事は出来るが、普通はクラスライブラリを使う 最初はMFCだったかな >>914 のサンプルを試したあと、 C++とクラスライブラリ使って同じ事をやってみると良いカモ
928 名前:デフォルトの名無しさん mailto:sage [2021/12/03(金) 23:01:33.51 ID:4DnkKvZO0.net] サンクス
929 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 00:32:09.23 ID:d5QmhWSv0.net] >>915 補足すると自前でC++を使ってやる方法も win16 初期には見られたが、 https://www.aamazon.co.jp/dp/4774100544/ 結局みんな MFC ばかり使うようになりました、もうひとつのメーカー製の OWL ですら滅びたようです MFC の使い方の本は私は持っていない…
930 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 00:34:51.25 ID:d5QmhWSv0.net] >>913 wisdom.sakura.ne.jp/system/winapi/win32/index.html
931 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 00:37:46.81 ID:eEY2XAtO0.net] 使い方って言うほどの高度の内容ではないかも ドキュメント的にはMSのサイトが本家だし詳しいかも 確かサンプルも載せてたはず https://docs.microsoft.com/ja-jp/cpp/mfc/documents-views-and-the-framework?view=msvc-170 この辺から入っていくのかな?無事生還を祈る
932 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 00:39:25.21 ID:eEY2XAtO0.net] https://docs.microsoft.com/ja-jp/cpp/mfc/mfc-desktop-applications?view=msvc-170 済まん、こっちが入り口か
933 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 01:16:03.60 ID:eEY2XAtO0.net] C++の、さらなる深みに入りたいなら、こちらのスレの方が良いかも知れない Microsoft Foundation Classライブラリ専用スレ https://mevius.5ch.net/test/read.cgi/tech/1474384848/ Visual Studio 2022 https://mevius.5ch.net/test/read.cgi/tech/1634166667/ C++相談室 part158 https://mevius.5ch.net/test/read.cgi/tech/1636969758/
934 名前:デフォルトの名無しさん [2021/12/04(土) 03:50:46.66 ID:2dOPVhNC0.net] >>913 https://xjman.dsl.gr.jp/X11R6/X11/
935 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 03:52:50.38 ID:2dOPVhNC0.net] >>913 https://developer.android.com/ndk?hl=ja
936 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 03:57:24.10 ID:2dOPVhNC0.net] >>913 https://dixq.net/forum/viewtopic.php?t=10480
937 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 04:06:08.86 ID:2dOPVhNC0.net] >>913 https://teratail.com/questions/43672
938 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 05:37:11.06 ID:FSuqUkr60.net] MFCはWin32 GDIの極薄すけすけのラッパーだ 俺なんかMFCから憶えてそこから多くを知った
939 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 10:14:46.95 ID:h5ysN7XFa.net] WinUIとかもいいけど、MFCに代わるちゃんとしたCなGUIライブラリを用意して欲しかったわ
940 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 11:19:54.80 ID:7g1ihlkq0.net] winuiはイケてないの?
941 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 19:24:30.40 ID:d5QmhWSv0.net] >>927 では win16 時代の本 https://www.amazon.co.jp/gp/product/4774100501/ でも何かしら得るものがあるってことですね、最近ちょっと元気が出てきたから買おうかな、やすいし
942 名前:mikuRTX mailto:sage [2021/12/05(日) 00:01:56.83 ID:AUNWU2UB0.net BE:871585708-2BP(0)] https://img.5ch.net/ico/2-1.gif 913です。 みんなありがとう!!
943 名前:デフォルトの名無しさん [2021/12/05(日) 02:12:34.65 ID:NlN9zBro0.net] >>930 本が100円でも送料が300円以上だったりするので、古本は要注意。 メルカリで送料込みで安いやつ探した方が良いかも知れない。 (但し、300円以下はあまりない。理由は自分で出品してみると分かる)
944 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 04:30:24.51 ID:VQoGm9OLd.net] 47氏こと金子氏はMFCでWinnyを作ったんだな
945 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 15:55:33.73 ID:HAXCanWR0.net] >>933 winny2 は BCC/OWL だったと聞いた気がします
946 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 16:50:16.47 ID:VQoGm9OLd.net] RIP
947 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 18:32:01.15 ID:HAXCanWR0.net] >>932 ありがとうございます!
948 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 05:13:43.34 ID:WxNsBn2X0.net] >>934 金子氏の書籍より、VC++ から C++Builder に GUI の変更を目的に変えた、との記述を見つけました Borland C++ Builder 4.0, および 5.0 であれば OWL5.0 をサポートしていますが、VCL の可能性のほうが高いですね
949 名前:デフォルトの名無しさん mailto:sega [2021/12/08(水) 16:27:00.62 ID:iGfgkXA80.net] Windows上で編集してLinux上でコンパイルしたいんだけど そういうのに適したIDEでお前らが使ってるおすすめを教えて
950 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 18:39:45.04 ID:RLv6UJuP0.net] >>938 vscode
951 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 18:59:09.17 ID:GPDURn2W0.net] Ruby on Rails では、WSL2, Linux, Docker, VSCode(Remote Container, Remote WSL)など、 本物のLinux(CUI)で開発できる。 MSYS2/MinGW みたいなWindows でコンパイルした、日本語でバグるものを使う必要もない Dockerを使わずに、日本人が作った、バージョンマネージャーのanyenv で、 rbenv, nodenv, pyenv など、多言語を統一的に扱う事もできる 組み込み用mruby の本には、Virtualbox, Vagrant を使う。 WSLはサポートしないと書いてあるけど、WSLでも使えるかも? Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11 宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。 Ubuntu 18.04, C99 対応 人工衛星イザナギ・イザナミで、使っている
952 名前:デフォルトの名無しさん [2021/12/08(水) 20:28:27.76 ID:pzF9gjPk0.net] >>940 キヤノンが打ち上げた光学衛星が夜間撮影に成功したそうです。 夜間撮影が出来るとなると、もはや立派なスパイ衛星。 何を撮影しましょう。
953 名前:デフォルトの名無しさん [2021/12/09(木) 11:14:02.01 ID:89810ylo0.net] 実用的なところで夜間に移動する北のミサイル発射トラック追尾。 個人的希望でgoogleカーの追尾。
954 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 13:22:59.56 ID:avfziXHId.net] 頭頂部が日に日に薄くなっていくような気がするから その辺のチェックを毎日やってほしい
955 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 13:26:11.16 ID:NPIqJHRg0.net] >Linux上でコンパイルしたい Linuxのシェル上でコンパイルしたいという意味? それともGCCを使いたいという意味?
956 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 02:07:06.32 ID:Uh57IFJZ0.net] そう言えば以前 Windows で動く IDE で Linux で動くプログラムの編集をしてそのまま リモートで Linux 側でコンパイルして更にリモートでデバッグまでできれば良いなと 思ったが、どうやらそれができるものはなさそうなので諦めて Linux 上で IDE を動かした。 まあでもクロス開発というか、リモートデバッグというか、そういうのが出来ると便利だよな。
957 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:42:22.14 ID:bMtT4XMq0.net] >>944 Linuxにインストールしてあるgccでコンパイルしたい ビルドボタン押したらssh経由でmakeできたら素敵だが 使ってるgccのバージョンがちょっとどころじゃなく古いので できればMinGW gccとかじゃなくて現物のgcc使いたい感じ
958 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 11:35:51.37 ID:vRQI3bYg0.net] 上でも書いたけど vs code ではダメなの? ターゲットが WSL、コンテナ、ssh 接続関係なく Win 環境から編集、コンパイル、デバッグ一通りなんでもできるよ。
959 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 14:06:37.92 ID:bMtT4XMq0.net] そこまでおっしゃるのなら、試してさしあげてもよろしくってよ?
960 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 15:29:28.42 ID:IPFkCC9z0.net] 歯ね
961 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 18:11:12.39 ID:7gXx5u630.net] 羽?
962 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 18:59:12.87 ID:wbbsNkrV0.net] 教えて差し上げて
963 名前:デフォルトの名無しさん [2021/12/11(土) 03:38:45.47 ID:LF8J+dNV0.net] >>945 を昨日書いたが、さっきこんなの見つけた。有料だけどな。 JetBrains、リモート開発機能と軽量IDE「Fleet」を発表 https://japan.zdnet.com/article/35180131/
964 名前:940 mailto:sage [2021/12/11(土) 13:26:00.16 ID:iDGs+tOs0.net] 漏れは、Ruby on Rails, WSL2, Ubuntu 18.04 で、 Web Socket など、Railsで使う各モジュールがネイティブコンパイルされるけど、 build-essential とか入れておけば、 Rails のインストール時に、勝手にコンパイルされる build-essential には、 gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています パッケージ: build-essential https://packages.ubuntu.com/ja/bionic/build-essential 43.0 MB のアーカイブを取得して、165 MB のディスク容量が使われます
965 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 22:36:35.78 ID:KvUnFidtd.net] VS2022に昔のプログラム持ってったら isspace()とかに80h以上の文字入れると例外になるけど いいのかこれ テーブルで処理してて80h以上は負だからテーブル外になるって理由はわかるんだけどさあ 昔のはなんとかうまくやってた気がするんだけど
966 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 01:29:13.77 ID:xqkchTt80.net] >>954 それ char で負の値を渡してるんじゃね?
967 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 01:30:08.80 ID:xqkchTt80.net] >>954 この話ね https://www.jpcert.or.jp/sc-rules/c-str37-c.html
968 名前:ハノン mailto:sage [2021/12/12(日) 06:11:48.38 ID:i1KpRZU20.net] >>954 int isspace(int c) ですよ、ちゃんと int の正の数で渡してます?char をまんま渡してたらまずいっすよ >>956 「unsigned char にキャストして、暗黙の型変換(プロモーション)に頼る」ってかなりアクロバットに見えますね
969 名前:はちみつ餃子 mailto:sage [2021/12/12(日) 11:16:13.91 ID:553p9mhC0.net] char が符号付か符号無しかは処理系定義で、 符号無しであるような処理系では char が int に拡張されたときに負数になることはない。 (考慮する必要はない。) C にはそういう処理系定義とか未規定とか未定義がもりだくさんなので ある処理系の定義では未定義を踏まずに済むプログラムでも 別の処理系では (処理系定義のコンボで結果的に) 未定義に引っかかることはよくある。 C のプログラムで完全に処理系定義や未規定を避けるというのは困難な話だし、 (可能なら環境依存を避けるように意識するのは良い作法ではあるけど) 違う環境に持ってきたらその程度の修正は必要なものだと思って諦めるしかしょうがない。
970 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 11:27:28.68 ID:0XY4m15b0.net] 未規定を避ける必要はない 未規定のブレ幅以内に収まるように書いてあるプログラムは適格 そうでないプログラムは不適格で未定義の動作となるだけだ
971 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:20:11.74 ID:lpH8MLUG0.net] 未規定と、明示的な未定義は違うのか?
972 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:33:46.14 ID:0XY4m15b0.net] 違う。 たとえば int f1(), f2(); int a = f1() - f2(); のようなことをしているとき、 f1とf2の評価順序は未規定 f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
973 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:44:58.99 ID:Qvw+czy00.net] 未規定って処理系毎に好きに実装して良いんでしたっけ?
974 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:55:44.75 ID:YDRHEr6M0.net] 処理系が好きに実装してよいし, ひとつの処理系の中で一貫している必要も, ドキュメントに明記する必要もない
975 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:58:06.91 ID:Qvw+czy00.net] 未定義動作だと、最悪SEGVでも良いようなオイ
976 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:59:00.60 ID:YDRHEr6M0.net] SEGVはマシな方なんですが
977 名前:はちみつ餃子 mailto:sage [2021/12/12(日) 18:09:59.00 ID:553p9mhC0.net] >>962 未規定な動作を含むプログラムは正しい。 あり得る動作の内のどれかにはなる。 未定義はどんな保証もない。 未定義の挙動を含むプログラムはプログラム全体がどんな動作をするかわからん。 全然関係ないと思う箇所でわけわからん動作になることもあるし、 未定義を踏んでる箇所より前に問題が表れることもないとはいえない。 >>963 処理系定義は「未規定の動作のうち,各処理系が選択した動作を文書化するもの。」ということになっている。 つまり処理系定義は未規定の一種という扱い。
978 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 18:12:53.56 ID:aAJ0FK40M.net] >>962 処理系どころか同じソースでもコンパイル毎に変えることすら許される
979 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 19:00:18.24 ID:xqkchTt80.net] >>961 > f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ これは嘘じゃね?
980 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 23:13:30.38 ID:VXD697/Q0.net] >>968 いやあってる 演算子の結合規則・優先順位は、あくまでも複数の演算子があったときにどの演算子を先に処理するか、に過ぎない オペランドを二つ持つ演算子一つに限れば、どっちのオペランドを先に評価するかは処理系依存だったと思う これは関数の引数についても同じ
981 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 23:20:10.63 ID:xqkchTt80.net] >>969 だれも結合優先度の話はしてないと思う。 > f1とf2の評価順序は未規定 これについては未規定で異論は無いんだよ。 > f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ でも、こっちは嘘じゃね?という話。そんな規定文面確認できない。
982 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 00:34:13.21 ID:0Z9P9uJp0.net] C17Draftのpp.65 6.5 1では? > If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined. > If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if such an unsequenced side effect occurs in any of the orderings.
983 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 01:22:45.02 ID:aR9zk0xx0.net] >>971 複数の関数呼び出し先にある評価同士、あるいは呼び出し元と呼び出し先にある評価同士は indeterminately sequenced となり、 unsequenced にはならない。 6.5.2.2 Function calls p10 > ... Every evaluation in the calling function (including other function calls) > that is not otherwise specifically sequenced before or after the execution of the body of the called > function is indeterminately sequenced with respect to the execution of the called function. 96) ... > 96) In other words, function executions do not “interleave” with each other. >961 の f1, f2 は関数なので、 f1() - f2() の結果が未規定だからといって未定義動作にはならない。
984 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 02:53:30.01 ID:0Z9P9uJp0.net] >>972 OK, 関数呼び出しを噛ませたことで評価順序が未規定ではなく不定(一方が他方の後(先)であることは保証される)になるので, 呼出先関数で副作用があっても(結果は未規定だが)未定義動作ではない, と 確かによくある a = i++ + ++i; みたいな例が適切だったか
985 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 03:50:46.86 ID:aR9zk0xx0.net] >>973 あともう1点念のため。 その例 a = i++ + ++i は未定義動作になる例として適切なんだけど、未定義動作になる理由は >971 の規定であって、 >961 の「評価順序によりaに入る値が変動する場合」というような理由じゃない。 例えば a = (i = 0) + (i = 0) は、どっちの i = 0 を先に評価しても a に入る値は 0 で変動しないけど、未定義動作となる。
986 名前:デフォルトの名無しさん [2021/12/14(火) 17:26:28.72 ID:LP8Fmqr90.net] 自作ライブラリのヘッダと標準関数のヘッダの読み込み順って なにか決まりごとはあるの? #include "jisaku.h" #include <stdio.h> ってやってたらキモイって言われたんだけど、これなんかおかしいか? インクルードガード利いてるし順番なんてどうでもいいだろ っていうか だったら自作のヘッダが先に来るべきだろ って思うんだけど
987 名前:はちみつ餃子 mailto:sage [2021/12/14(火) 18:00:24.76 ID:+JRF3Q+g0.net] >>975 たとえば assert.h を #include する前にマクロ NDEBUG が定義されていると assert が無効になるといったように 動作の切り替えをするマクロというものが存在する。 標準ではそういうマクロは下線で始まる名前になってることが多いから自分のコードの中の名前がたまたま衝突するということは そうそうないんだけど、各処理系やライブラリに固有の切り替え用マクロが雑な短い名前だったら意図せず影響を与えるかもしれない。 単なる習慣としてもプロジェクト内のヘッダは後に書くのが定着しているね。
988 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 18:01:10.76 ID:la3dHmwP0.net] ユーザー先だと、標準的な関数やdefineが定義済みになって不具合が出るかもしれないし 一般的な方から読み込んだほうがいいのでは?
989 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 18:42:48.59 ID:nW+wkdEb0.net] なんか本の著者は自作モジュールを先にインクルードするって言ってたな 理由はそのほうがコンパイルエラーが早くなるかららしい
990 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 19:01:07.43 ID:LP8Fmqr90.net] >>976-978 なるほど 若い時分なら「そんなの間違ってる! 俺が世界を正す!」って言ってたかもなぁ とりあえず自分ヘッダは後ろで読むようにするわ
991 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 19:56:33.18 ID:J7XSbp4E0.net] コンパイルエラーが無くなってもバグは残るからなあ
992 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 21:37:05.35 ID:Il/nsfIC0.net] >>977 標準ヘッダを後に書くと 衝突したとき標準ヘッダ側がエラーとして表示されるからな
993 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 22:16:45.94 ID:yrIaaVQv0.net] >>979 決断に水を差すことになるかもしれないけど、↓のベストアンサーでは自作ヘッダが先だよ。 https://stackoverflow.com/questions/2762568/c-c-include-header-file-order
994 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 22:26:46.15 ID:Eg2Dauqu0.net] くだらねえ 単に依存関係ってだけのことだろ 一概にどっちが先であるべきだなんて押しつけは糞食らえだ
995 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 23:19:28.66 ID:J7XSbp4E0.net] 以前のサイトだと 標準ライブラリ 業務共通ライブラリ 個別ライブラリ の順にインクルードしなさいと決められてた
996 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 00:55:34.24 ID:Nn1Wh5vx0.net] まぁ、これも他のスタイルと同じで、どっちがいいというよりは単純なルールで統一されていることが重要なものと思ってる。
997 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 05:27:05.50 ID:XqRMbcSJ0.net] 押しつけはやる気と引き換えだ そのコストに見合う理があるべき
998 名前:はちみつ餃子 mailto:sage [2021/12/16(木) 11:05:28.00 ID:78Qrz9F+0.net] ヘッダのインクルードは全て .c の側でやる (ヘッダ内でインクルードしない) という流儀もある。 既にほとんど滅びた流儀だろうし、現代的ではないと断っておくがこの考え方を取るのであれば インクルードの順序は重要になる。 // foo.h struct foo{}; // bar.h // ここで foo.h や stdint.h をインクルードしない void bar(foo, uint32_t); // bar.c #include <stdint.h> #include "foo.h" #include "bar.h" void bar(foo x, uint32_t y) { printf("bar\n"); } // main.c #include <stdio.h> #include <stdint.h> #include "foo.h" #include "bar.h" int main(void) { struct foo x; bar(x); } メインの側で適切な順序にしないといけないから抽象不足だが、 インクルードガードしてても読み込んでプリプロセスの手順を通すという処理は発生してしまうので それすらも最低限であるのが好ましいなどの思惑があるのだと思う。 (いまどきのコンパイラではインクルードガードのパターンを検出して 二度目にはファイルを読むことすらしないものもあるらしい。) まあリソースをケチるのが正義だった昔の話やね。
999 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 21:34:42.48 ID:U4IWqRR10.net] test
1000 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 19:14:59.61 ID:Xd/JFvMa0.net] レジスタから「値を読みだす」というのは「値をコピーする」と同義ですか?
1001 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 05:09:46.99 ID:ZnDQBfvC0.net] なんか違和感ある言い方だな 「読む」とはCPUへの入力、「書き込む」がCPUからの出力で たとえばメモリリードはメモリからの出力、メモリライトはメモリへの入力を意味する 「コピー」はそれで合ってる 「ムーブ」になる場合は必ずそう断るから
1002 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 05:42:34.84 ID:TL6ByUiE0.net] >>990 たとえば int a = 1; int b = a + 2; この「a + 2」の「a」の部分はメモリリードしてるということですよね このとき計算のためにCPUに値を入力(コピー)しているという理解で合ってますか?
1003 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 05:43:27.34 ID:+etymfSa0.net] レジスタからの読み出しは読み出しという操作自体に副作用がある(レジスタに対する読み出しを検知してデバイスが何かを行う)場合があるので, 必ずしも同義とは言えない
1004 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 05:58:42.33 ID:ZnDQBfvC0.net] >>991 合ってる
1005 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 06:05:01.87 ID:TL6ByUiE0.net] >>992 >>993 ありがとうございました
1006 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 06:43:15.91 ID:M4a7QlIa0.net] >>991 >CPUに値を入力 レジスタはCPUなのかメモリなのか int a = 1; int b = a + 2; これがアセンブラだと mov ax,1 add ax,2 mov ptr[b], ax メモリに書き込んでるのは3行目しかないが
1007 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 01:01:40.65 ID:s/Gdf1X50.net] >>995 アセンブラよくわからないんですが mov ax, 1 // axレジスタに1をコピー add ax, 2 // axレジスタの値に2を加算 mov ptr[b], ax // axレジスタの値をptr[b]にコピー でしょうか ptr[b]っていうのはなんですか?
1008 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 01:29:37.77 ID:M0D5aTvU0.net] 最適化で変数aがレジスタに充てられてるんだな 最適化を抑制すれば mov ax,1 mov ptr[a], ax mov ax, ptr[a] add ax,2 mov ptr[b], ax とかになるんじゃね
1009 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 11:51:05.24 ID:9FGZD56t0.net] #include <stdio.h>
1010 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 11:51:41.94 ID:9FGZD56t0.net] int main(void) { printf("good-bye 157\n");
1011 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 11:52:11.17 ID:9FGZD56t0.net] } /*このすれは終了しました*/
1012 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 180日 0時間 29分 20秒
1013 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています