1 名前:デフォルトの名無しさん [2020/09/28(月) 14:41:30.00 ID:QxfbhGyV0.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言語なら俺に聞け 155 https://mevius.5ch.net/test/read.cgi/tech/1589120427/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
741 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 09:20:14.53 ID:I+zADhcc0.net] >>731 ,733 なぜC言語なのかは>>724 に聞いてくれ 少なくとも今どきmmapまで使える環境でメガも乗ってない環境って相当珍しいだろって話な
742 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 12:39:42.10 ID:1XmQmKI8d.net] >>736 >>734
743 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 12:52:09.08 ID:AV0Gp17OM.net] >>737 珍しくないと言うなら実例をあげればいいだけ
744 名前:デフォルトの名無しさん [2021/02/06(土) 10:12:48.76 ID:DFt8vUVO0.net] mmapってUNIX系OSだけでは?他にもあるかも知れないが互換ライブラリ経由でそのOS固有の同機能のやつ呼んでたりしない?(それで良いなら良いんだが)
745 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:51:00.80 ID:PohEB++tF.net] 対象をhtmlに限定したのが敗因
746 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:26:44.70 ID:EjDQT0l8K.net] >>739 メモリマップトファイル一般を指しての発言じゃないかな、CreateFileMapping()とか含めて。 >>740 たぶんシーケンシャルアクセスで足りるから、read()でええやんってなるよな。
747 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:45:50.67 ID:zn5WrP4C0.net] >>739 何が問題なのかよくわからんが?
748 名前:デフォルトの名無しさん [2021/02/22(月) 07:04:45.29 ID:Xbe4DE+80.net] どうやったらループを小さくしたり無くしたり出来るのか教えてほしい。
749 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:02:42.93 ID:NYs90WT8M.net] べた書き? printf("hello flat!\n"); printf("hello flat!\n"); printf("hello flat!\n");
750 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:21:30.68 ID:iIDQLaUs0.net] 標準ライブラリにある処理はなるべく標準ライブラリのを使うとか ループをまとめて関数に出すとかでいいんじゃないの? 根本的な解決にはならないかもだけど複雑度は下がる あとはアルゴリズムの改善しかないんやない
751 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 02:48:11.51 ID:VIkkm8/qd.net] >>739 実装は知らんがむしろwinでは頻用すると思う 80'後半くらいに生まれたそろそろ古参なスクリプト言語(Pythonなど)には大体ある スクリプト故に富豪的に全部載せ
752 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:04:42.97 ID:VIkkm8/qd.net] >>743 ループ変数をi, j, kとすれば、int ijk(範囲はi*j*k)とまとめればネストレベル3→1にできるよ i = ijk/j/k j = ijk%(j*k)/k k = ijk%kね パフォーマンスの利点
753 名前:烽る mo量子化学計算はナイーブには最低4段のforが要求されるんで、かなり重宝 なんで4段をcollapseしたいけど、他人が初見で解釈するのはちょっと無理強いなので控えてる [] [ここ壊れてます]
754 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:15:27.68 ID:VIkkm8/qd.net] いや今書いたのも改めて並べるとmodに慣れていと1分くらい考えるか… 二段は簡潔なのでイディオムとして使って良いと思う i*jを走るループ変数ijに対し、i==ij/j, j==ij%j ネストは半分になるし可読性もよいので、多分ベストプラクティス ネストしたループを全てワンライナーで書けるFortranが羨ましい
755 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:42:44.91 ID:1ia+Vnu00.net] divもmodもクソ遅いと思うんですがそれは
756 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:31:33.75 ID:VIkkm8/qd.net] >>749 ステップ数で考えてたからそういう視点は無かったかも、精々2倍程度だし見落としてた -o3とかするとベンチ的には速いから最適化とか効いてるんだろうかね?
757 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:35:35.49 ID:VIkkm8/qd.net] だからといってわざわざ速い最適化divmod拾ってくるまでの価値も無いし、つまらんハックか 猛省
758 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:24:27.89 ID:NtDnGIIYK.net] まあ定数の割り算は掛け算で実装するよな
759 名前:751 mailto:sage [2021/02/23(火) 12:00:01.73 ID:EYNng8zFd.net] >>752 今アセンブリ見てみたら2147...647=2^32-1を引いて頑張ってる様子が見えた!gcc -O3/win 色々パラメータ弄って様子見ようとしたら普通に割り出したので混乱したが、実行時に与えるとフォールバックするよう コンパイル時に定数で与えたらそうするっぽい 勉強になった
760 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:21:23.56 ID:1ia+Vnu00.net] 目安でしかないがx86-64ではmulと比べてdivやmodはレイテンシ2倍どころではない場合が多い https://www.agner.org/optimize/instruction_tables.pdf パフォーマンスが重要な場合は除数を定数にするか2の冪にしてシフト/論理積にする
761 名前:デフォルトの名無しさん [2021/02/24(水) 15:46:51.63 ID:/D2VYVJH0.net] ソフトウェア割り込みプログラムは書けるのか
762 名前:デフォルトの名無しさん [2021/02/25(木) 06:12:34.32 ID:R7WVwVFS0.net] >>755 インラインアセンブラ必須かな
763 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 07:07:20.11 ID:bxBNuN1v0.net] 環境次第 組み込み系の処理系だと割り込みハンドラーを書けたり割り込みフラグの制御ができたりするのはよくある
764 名前:デフォルトの名無しさん [2021/02/25(木) 09:55:57.73 ID:R7WVwVFS0.net] >>757 それはC言語仕様には無い特殊な命令。SHのCコンパイラとか。
765 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:11:28.17 ID:k63j55rm0.net] VCで作った実行ファイルを cgiファイルに変える方法て わからない? どうしてもc.cgi.exeになって しまう
766 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:17:09.21 ID:JLHf2OjdM.net] >>759 どのHTTPサーバか、どんな設定にしてるかにもよるけど 名前だけ変えればおkじゃねーの?
767 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:00:24.23 ID:MOr3wCfr0.net] ファイル名変えておいとくだけなんとちゃうの?
768 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:06:31.57 ID:ZW7ncKwI0.net] Windows系サーバーだったら、 実行ファイルc.exeをc.cgiにリネームすれば動くはず
769 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:47:45.34 ID:yh+1kBamK.net] そもそもCの話じゃないんだが >>759 エクスプローラの表示の設定を「拡張子を表示する」モードにすべし 「拡張子を表示しない」のチェックを外す方式だったかもしれん
770 名前:デフォルトの名無しさん [2021/02/26(金) 03:45:13.89 ID:5d4w5oMJ0.net] >>763 スレチ
771 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 06:57:40.05 ID:eCf8RuSVK.net] //何だよ俺のせいかいw //じゃせいぜいCだけででがんばりや #include <stdio.h> int main() { return rename("c.cgi.exe", "c.cgi"); }
772 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 08:02:43.73 ID:M2eccXrmd.net] renameってstdio.hだっけ?
773 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 09:51:30.74 ID:31AFaQsJ0.net] >>766 stdioじゃよ
774 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 12:12:32.73 ID:M2eccXrmd.net] げ、本当だ
775 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 16:52:25.12 ID:XyNDIUjTa.net] すみません、質問させてください exturn FUNC(void, define1) 関数名(void) ってなってるのが、関数のプロトタイプ宣言であることは理解できているのですが FUNC()の意味が分からないです define1にはキーワード定義だけされたdefineが入ってます
776 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 17:06:32.77 ID:Db4OPSpGM.net] >>769 それはC言語の文法じゃなくて、あなたのプロジェクト固有のマクロなので、同僚に聞くかgrepしてください
777 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 17:07:39.42 ID:XyNDIUjTa.net] >>770 ですよねー もう聞くわ
778 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 08:22:50.63 ID:7emEuadh0.net] Cの文法内に収まる FUNC() って 一般C #define FUNC(ret,opt) ret Microsoft系のやつ 呼び出し規約まで対応 #define FUNC(ret,opt) ret opt ぐらいしか想像つかんな それを吸収しようとしてるのかしら?
779 名前:デフォルトの名無しさん [2021/03/19(金) 19:09:51.97 ID:mKZFPhjYM.net] ret opt の記述順を変えなきゃなんないコンパイラ併用でもしてなきゃ 必然性無いよな
780 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:24:42.50 ID:1rqnmNJD0.net] VS2019を使用してます。 c言語でハッシュテーブルを使いたい場合、 定番のライブラリってありますか? 自作は考えてません。
781 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:43:09.76 ID:f5CNtQYv0.net] C++ hashクラスを使う C 自作する スキな道を歩もう
782 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:49:36.36 ID:bD1toMMoM.net] Cにはない 多少は作るに該当するが、GPL汚染気にしないならhlist(list.h)かいっそのことrbtree引っ張ってくるのが楽 hlistは覚えてないがfreeBSDにもlist_headはあったと思うから雑に書いて作れる
783 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 20:00:40.49 ID:1rqnmNJD0.net] >>775-776 ありがとうございます。
784 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 17:39:11.35 ID:BhPjOTnw0.net] 境界調整について教えて下さい typedef struct stru{ int inta; char ch; double db; } Str; という構造体を作って、 Str st = {10 , 'n' , 5.20}; printf("構造体全体の大きさは %dバイト アドレスは %p \n", sizeof(st) , &st); printf("inta の大きさ %dバイト アドレスは %p 値は %d \n", sizeof(st.inta), &st.inta , st.inta); printf("ch の大きさ %dバイト アドレスは %p 値は %c \n", sizeof(st.ch) , &st.ch , st.ch); printf("db の大きさ %dバイト アドレスは %p 値は %lf \n", sizeof(st.db) , &st.db , st.db); としたところ、 構造体全体の大きさは 16バイト アドレスは 0019FF2C inta の大きさ 4バイト アドレスは 0019FF2C 値は 10 ch の大きさ 1バイト アドレスは 0019FF30 値は n db の大きさ 8バイト アドレスは 0019FF34 値は 5.200000 という結果が得られたんですけど、この中で 0019FF30から1バイト分には'n'という値が入っていて、 0019FF34から8バイト分には5.200000という値が入っているわけですよね? では0019FF31から0019FF34までは何があるの?
785 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 17:55:49.95 ID:NyQKOVd9d.net] 何もない
786 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:15:58.84 ID:IaPVNFDHa.net] ごみ
787 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:21:46.90 ID:uqOlgHvIM.net] >>778 何があるかわからないしむりやり読んだら何が起こるかわからない ってことになってる
788 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:27:06.04 ID:4kXIzh+CM.net] >>778 ファイルに書き出してバイナリダンプ gdbでx 見ても大したことない
789 名前:778 mailto:sage [2021/04/26(月) 18:28:20.87 ID:BhPjOTnw0.net] その領域はとにかく使えないって事なんすかね。
790 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:31:26.64 ID:NyQKOVd9d.net] そうなんです
791 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:32:08.60 ID:TR73VE240.net] 使いたいならchの後にcharを3つ作ればいいじゃない
792 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:06:39.04 ID:fVzcGJCCa.net] >>778 __attribute__ ((packed))
793 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:43:03.58 ID:+l9LtKe60.net] #pragma pack(push,1) >>778 #pragma pack(pop)
794 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 22:14:43.60 ID:BhPjOTnw0.net] またいつの間にかレスが。 >>784 それもありか。なるほど。 >>786 ,787 そういうのがあるんですか。入門書なんかには出てこないよね、それw 教えていただきありがとです
795 名前:788 mailto:sage [2021/04/26(月) 22:16:02.71 ID:BhPjOTnw0.net] >>784 は>>785 だった
796 名前:デフォルトの名無しさん [2021/04/26(月) 22:20:18.66 ID:fe3Q/YJ30.net] 訓練でC言語を習っています。 就職先としてはJAVAの客先常駐になると思うのですが、 C言語も習う以上はある程度使えるようになりたいと思っています。 ポインタが難しいとよく見るのですが、勉強になるウェブサイトが ありましたら教えてください。 もしくはポインタだけの参考書があるようなのですが、 それを買った方が良いですかね?
797 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 06:03:07.86 ID:RrDgDJ6XM.net] ゆとり? 技術的な内容ならまだしも学習方法や心構えまで他人に丸投げするのは職業人の姿勢として如何なものか
798 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 18:46:29.71 ID:7AKt1vSf0.net] そういう時代 熱くなるな PCを持ってないような人がソフト開発者として面接に来るような時代
799 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:52:06.89 ID:PZc7df0ca.net] Cで Windows、Linux、macOS のすべてで動作するコンソールアプリを作りました 標準のライブラリのみを使用していたつもりでも、知らずにGNU拡張を使用していたり、若干の移植の障害はありましたが、それほどではありませんでした 同じようなことを C++ でやろうとした場合、Cより難しくなりそうでしょうか、そうでもないでしょうか C++ でやるからには STL は使いたいです
800 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 22:44:05.13 ID:7AKt1vSf0.net] 同じようなもんじゃない?
801 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:21:11.19 ID:PlZRAN+K0.net] 言語仕様としてのGNU拡張は使ってもライセンスに触れないよな? 触れるのはライブラリ使用した場合じゃないか?
802 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:35:23.05 ID:4KD2riuz0.net] コンパイラ独自の拡張であってポータビリティに欠けるってだけで それ自体がGNUライセンスに引っかかるわけではない
803 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:56:50.52 ID:sVhsMckNM.net] >>790 ・格納先を渡す(普通のポインタ ・callee alloc(二重ポインタ ・関数ポインタ これだけ分かってればいいというか、仕事でならこの範囲だけにしとけ
804 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 00:15:24.35 ID:T1kQSA270.net] 意外と引っかかるのは、複雑な変数宣言を読み解くこと
805 名前:793 mailto:sage [2021/04/29(木) 10:41:18.72 ID:8DhczGXra.net] ご意見ありがとうございました やはり、掛かる手間は同じようなものですかね
806 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 11:08:27.39 ID:1rAkIDNr0.net] 基本文法を憶えたら何かまとまったアプリを作んないと ただ言語そのものを習ってそれっきりだと忘れるだけだぞ
807 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 13:50:03.41 ID:56IZFSRD0.net] 所詮は道具だし、使わないと忘れる
808 名前: mailto:sage [2021/04/29(木) 16:32:35.09 ID:q0JKcoqRH.net] >>793 C++11 以降は、例えばスレッド制御・ファイルシステムをライブラリに取り込む、など積極的に環境依存が少なくなるように動いている(ように私には見える)ので、多分移植はもっともっと易しくなる、と思います、失礼、易しくなる気がしないでもありません‥‥
809 名前: mailto:sage [2021/04/29(木) 16:39:37.88 ID:q0JKcoqRH.net] >>790 「新・標準プログラマーズライブラリ C言語 ポインタ完全制覇」前橋 和弥著 https://www.%61%6d%61%7a%6f%6e.co.jp/dp/B077ZTQY62/ ポインタを完全制覇してくれる本だそうです、私も興味があったのでポチりました‥‥
810 名前:793 mailto:sage [2021/04/29(木) 16:48:12.19 ID:loQVmfSpa.net] >>802 ありがとうございます そんなこともあるのかなと、淡い期待もしつつ… でした
811 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:45:22.42 ID:LfIZA/yy0.net] cについてほとんど知らないけど、組み込みがメインな感じですか?
812 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:56:09.60 ID:/1wJlD5g0.net] システムプログラミングの方が多いんでない?元々それ用だし OSのインターフェース提供はどこもC
813 名前:はちみつ餃子 mailto:sage [2021/05/02(日) 16:01:37.32 ID:VAfyzxcR0.net] パソコンでも低レイヤ (カーネルとかデバイスドライバとか) は C で書くことも珍しくはないし、 アプリケーションのめっちゃ速度が重要なとことかは C で書いたほうがチューニングしやすい。 言語処理系なんかはだいたい C か C++ で実装されるよ。 (Python とか Ruby とか Perl とか。) ハードウェアの都合に合わせたチューニングが必要なところはパソコンにもまだまだ有って、 割合で言えばそれほど多くは無いけど、 絶対数で言えば組み込みで C が使われるよりはパソコンで C が使われるほうが多いと思う。 (数値的な根拠があるわけじゃなくて私の印象だけど。)
814 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 16:46:12.37 ID:3j0DSsAI0.net] これからはカーネルドライバもRustで書こうぜ
815 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 18:40:43.65 ID:r2Ed4Ypi0.net] >>808 だからメモリ割り当てでABENDするような言語系を カーネルで使えるわけないでしょw 2021年4月15日 パニックお断り―Linus,"Rust for Linux"の盛り上がりに釘を刺す:Linux Daily Topics|gihyo.jp … 技術評論社 https://gihyo.jp/admin/clip/01/linux_dt/202104/15
816 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 20:01:40.03 ID:3j0DSsAI0.net] >>809 だいじょぶだろ そのうちなんかキャッチする機構とか実装すんだろ そしたらLinusもニタニタしながら受け入れるよ
817 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 22:32:14.89 ID:r2Ed4Ypi0.net] >>810 んじゃ、そうなってから>>808 みたいなことは言おうねw 狸が逃げるよw
818 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 12:38:32.98 ID:2qlH4pSsM.net] >>811 まさにそうする話がもまいの提示した記事に書いてあるんよ
819 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 21:44:15.09 ID:vGOhdVnf0.net] >>811 https://www.tag1consulting.com/blog/interview-linus-torvalds-linux-and-git 「Rustなー、まあそのうちわかるんじゃねーの? コアはねーだろうけどドライバならいんじゃね? C言語の置き換えっつーよりCの補佐的な?」 って言ってるし、これ読む限り Linusもだいぶ前向きじゃん
820 名前:デフォルトの名無しさん [2021/05/08(土) 20:10:13.24 ID:jbZm9MmR0.net] github.com/bear24rw/alsa-utils/blob/master/aplay/aplay.c :135行 static off64_t pbrec_count = LLONG_MAX, fdcount; が static off64_t pbrec_count = LLONG_MAX; と書かれていない理由を400字以内で述べよ。 ちなみに、我が家では LLONG_MAX値 == fdcount値 です。
821 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 22:16:59.18 ID:4nIz2VjA0.net] しらねえ。 ↑ 5文字目
822 名前:デフォルトの名無しさん [2021/05/09(日) 13:32:52.94 ID:WMytKT+1F.net] >static off64_t pbrec_count = LLONG_MAX, fdcount; >が >static off64_t pbrec_count = LLONG_MAX; >と書かれていない理由を400字以内で述べよ。 知らんがな >static off64_t pbrec_count = LLONG_MAX, fdcount; >が >static off64_t pbrec_count = fdcount; >と書かれていない理由を400字以内で述べよ。 書いた香具師に聴け
823 名前:デフォルトの名無しさん [2021/05/25(火) 13:13:50.22 ID:0e19GInL0.net] int (**c)[]; と int *(*e[]); の意味がわからずに困っています。 ちなみに二つとも意味がわかりません。これらは同じものなんでしょうか?
824 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:28:28.93 ID:d4PPfL2v0.net] cはint配列へのポインタへのポインタ eはintポインタへのポインタの配列で、丸括弧は不要 cとeは同じではない
825 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:33:48.93 ID:tg9vUr3N0.net] ややこしそうなのは途中に strust や typedef 使って先送りにする
826 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:37:45.63 ID:tg9vUr3N0.net] struct
827 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:44:44.11 ID:7uNVaR2o0.net] ポインタ変数定義に()が付くと理解が困難になる・・・。
828 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:50:25.07 ID:mW0d20UP0.net] より複雑な宣言子の解釈 https://docs.microsoft.com/ja-jp/cpp/c-language/interpreting-more-complex-declarators?view=msvc-160
829 名前:デフォルトの名無しさん [2021/05/25(火) 13:57:49.19 ID:0e19GInL0.net] >>822 これが一番わかりやすかったです。 ありがとうございました。
830 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 19:01:00.19 ID:5zVTpare0.net] 小生使う機会ないんでそんな複雑な記述の経験ないし機会あっても出来る自信ないのだけれど、アセンブラで書くと縦長になるソレを横に圧縮したC言語って、ホント効率落とさず物臭する為の記述だよね。 (アセンブラよりは)安全だし。
831 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 21:20:58.20 ID:d4PPfL2v0.net] ケントンプソンの面倒くさがりをデニスリッチーが後継した高級アセンブラ
832 名前:デフォルトの名無しさん [2021/05/25(火) 21:26:46.44 ID:mNrV1IEb0.net] cdecl で説明してもらえば?
833 名前:デフォルトの名無しさん [2021/05/26(水) 09:42:42.04 ID:mfYAtZMN0.net] pkg install cdecl すると,c++decl -> cdecl しかsym-linkしてないので 手動でexplain -> cdecl cast -> cdecl declare -> cdecl もいれておいた. で, explain 'int (**c)[]' declare c as pointer to pointer to array of int explain 'int *(*e[]);' declare e as array of pointer to pointer to int と説明された.
834 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 11:19:17.43 ID:2/BE6bBSF.net] >>817-818 ++c; // ← Error ++e; // ← OK 説明してみ?
835 名前:デフォルトの名無しさん [2021/05/26(水) 11:21:32.69 ID:2/BE6bBSF.net] ああ間違えたω >>817-818 ++c; // ← OK ++(c[0]); // ← Error ++e; // ← OK ++(e[0]); // ← OK
836 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 12:07:18.36 ID:DNuuAFHS0.net] ++eがOKなわけねえだろw
837 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 10:47:37.95 ID:kQVwJQto0.net] ID:2/BE6bBSFは逃げたかw まあ逃げたくもなるよな あんな赤っ恥w
838 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 14:56:50.43 ID:UXlES6Sbd.net] typespecifer declarator-initializer; と実質的に型を決める文法要素が二分されてるのがイケてないとは思う =で示されるinitializerまたは代入式の右辺でアサインされる対象が左辺そのものでなく、declaratorの識別子部分なのも=の意味論(等しくする)に合ってないよなあ まあ慣れるんだけど
839 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 15:03:11.46 ID:UXlES6Sbd.net] 関数ポインタと配列とポインタが入り交じるようなときは、各部分毎にtypedefして、数行に分けて型を組み立てるのがよいと思う
840 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 15:08:30.66 ID:UXlES6Sbd.net] c23では宣言(というか殆どの構文)に付けられるattribute([[attr]])が入るけど、これ改造して[[type]] identifier;の形で宣言するように(仕様上は)できるよね c23以降の規格で取り入れられないかな?
841 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 01:02:59.83 ID:7zb2zdx50.net] 基本情報で分からないとこあるんで教えてください。。 Cに入るのがなんでキなんでしょうか p→coursenameはポインタだから、出力する時は*p→coursenameにすべきでは無いでしょうか https://i.imgur.com/8Lp9aMx.jpg https://i.imgur.com/DgNEbGT.jpg https://i.imgur.com/xvvs1oJ.jpg https://i.imgur.com/3bG8iC8.jpg https://i.imgur.com/qHhb9jj.jpg