1 名前:デフォルトの名無しさん [2017/08/10(木) 20:21:23.44 ID:hEocmkh50.net] 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/ 前 mevius.2ch.net/test/read.cgi/tech/1500293207/ www.geocities.jp/c_cpp_cs/about_c/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
577 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 18:41:01.91 ID:fZ4i0/3ka.net] >>567 >>559 のレスの中の「早く」の使い方は自然だと思うが…。 日本語学校の1年目に、どう教わったの?
578 名前:デフォルトの名無しさん [2017/10/06(金) 20:42:56.05 ID:qH0Ei3hn0.net] >>569 朝鮮語か日本語かには関係ない 電気屋のルールだ
579 名前:デフォルトの名無しさん [2017/10/07(土) 14:47:24.49 ID:f9dDdlSq0.net] >>555 >>546 にはそのstrncpy()が書かれているが?
580 名前:デフォルトの名無しさん [2017/10/08(日) 10:02:50.14 ID:iaWD4MFGE.net] PHPしかできないザコだったけどC言語が楽しい Cのスタンダードなコーディングスタイルってないですか? インデントにタブ使ってたりifに{}使ってなかったりするコードをよく見かけますけど
581 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 10:09:18.29 ID:+nfO/L5n0.net] 戦争でも起こす気か?
582 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 11:30:23.33 ID:HosRocIl0.net] >>573 C言語 コーディングスタイル でググれ あと結果の報告は要らん と言うか報告するな 理由は>>574 に書いてある
583 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 11:56:53.58 ID:SX/6L99bd.net] 戦いの火蓋は切って落とされた
584 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 13:00:43.13 ID:FR3ELF64M.net] インデントは空白4個だね
585 名前:デフォルトの名無しさん [2017/10/08(日) 13:04:33.16 ID:SXbZ1Yc30.net] >>573 ほんまC言語楽しいよな 俺もC#かWeb系スクリプト言語しか使ったことなかったんだが
586 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 13:04:53.34 ID:e96mZsST0.net] >>577 2つで十分ですよ
587 名前:デフォルトの名無しさん [2017/10/08(日) 13:05:13.53 ID:SXbZ1Yc30.net] C++はゴミ
588 名前:デフォルトの名無しさん [2017/10/08(日) 14:51:03.41 ID:c+/m9riq0.net] >>579 いやタブ1つにして表示幅はスペース4つ分だ。
589 名前:デフォルトの名無しさん [2017/10/08(日) 14:54:49.62 ID:c+/m9riq0.net] >>576 ああ。もうこのスレはスペース開けるか開けないか改行するかしないか何文字にするか中括弧はどうするか行末にバックスラッシュ入れて次行に書くか書かないかgotoどうするか等の話で延々と10年ぐらい費やされるんだろうな。 もちろんエディタの話に飛び火してviがvimがemacsがとなる。
590 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 14:55:08.52 ID:bhcsmcAx0.net] スペース一つで充分
591 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 15:03:04.04 ID:Eg4i3QFB0.net] プログラム終了前にfree()が必要かどうかを忘れちゃいかん。
592 名前:デフォルトの名無しさん [2017/10/08(日) 16:00:19.88 ID:tULmhvm40.net] ちょっと教えてくださいとあるHPから抜粋 意味が分からないので解説お願いします 私が負荷した文は<< >>で囲みます struct Person { char name[20]; int sex; // char sex; int age; double height; double weight; } person_s; <<←今までの自分の認識:Person構造体のインスタンスperson_sを生成 しかしこの認識は後述@でpがインスタンスであると推定できることから間違っていると推定できる>> << person_sは構造体宣言の為の鋳型と推定 しかし様々なプログラムをチェックするとここでインスタンス宣言している例も見受けられる >> << 変数が構造体宣言の為の鋳型なのかインスタンスなのかはコンパイラが記述から自動判断???>> person_s p; << ←pがPerson構造体のインスタンスであることは後述@のメンバ呼び出しで推定できる >> とかけば、不要な宣言を減らすことができます。 構造体メンバの初期化 各メンバの初期化方法として次のようなものがあります person_s p = {"Tom", 0, 20, 175.2, 66.5}; <<←構造体宣言鋳型person_sを使用しpをインスタンス宣言??>> // または person_s p; << 構造体宣言鋳型person_sを使用しpをインスタンス宣言?? >> p.name = "Tom"; << この記述でpが構造体Personのインスタンスであると推定できる ・・・@ >> p.sex = 0; << person_sは構造体宣言の鋳型 pはインスタンスであると推定できるが >> << 何故ダイレクトにPersonを使ってpを宣言しないのか? >> << 何故person_sなどという変数を使って間接的に宣言するのか? >> << うんちくきぼんぬ >>
593 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 16:03:19.22 ID:dE95R3nJ0.net] struct Person の前に typedef がありそうな雰囲気
594 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 16:13:28.90 ID:yi/NbOiJ0.net] ここかな https://qiita.com/nom
595 名前:unomu/items/1a72b0150ea0fcf442b0 typedef の書き漏れだろうね [] [ここ壊れてます]
596 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 16:38:19.39 ID:HosRocIl0.net] >>584 exit() の前にだろ
597 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 17:08:17.03 ID:F9J/pQ0V0.net] C++ならtypedefなくても可 多分.cppでビルド通したんだろうね
598 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 17:13:11.77 ID:dE95R3nJ0.net] >>589 後の句 person_s を型名として使ってるんで typedef は必須じゃない? (strust 省略の Person で宣言してるのとは違う)
599 名前:デフォルトの名無しさん [2017/10/08(日) 17:16:54.10 ID:tULmhvm40.net] なるほどー ありがとうございました
600 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 17:26:51.19 ID:F9J/pQ0V0.net] >>590 C++ではtypedefは不要だよ(別にあっても構わないけど) structとclassはメンバーのデフォルト設定がpublicかprivateかという違いを除けば構文的には全く同じように使える structで継承することすら出来る
601 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 17:32:00.82 ID:dE95R3nJ0.net] >>592 論点はそこじゃなくて struct Person { }; Person p; が C++ では文法として通るのは指摘の通り 質問元の記述では struct Person { } person_s; person_s p; こうなってるから、これじゃ C++ の文法でも通らないでしょうよ ってことで
602 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 17:37:28.39 ID:F9J/pQ0V0.net] 通るよ class宣言ではいちいちtypedefなど使わないのと同じように構造体でもtypedefは省略するのが一般的 むしろ先頭の構造体テンプレート名を省略して最後の型名だけ宣言する場合も多い
603 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 17:42:06.58 ID:dE95R3nJ0.net] https://ideone.com/e1pLf2 通ったっけ? って確認コード インスタンスとtypedef の区別つく?
604 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:04:45.47 ID:PUMPETat0.net] structが省略可能になってtypedefしなくなったのを typedefが省略可能と間違って覚えてるんじゃないだろうか
605 名前: mailto:sage [2017/10/08(日) 18:08:10.27 ID:dlDwfjxk0.net] >>594 >>595 を見る限り通らないようだね
606 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:14:58.26 ID:ALuk3l/eM.net] あれ? 通らないのかこれ?
607 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:20:47.85 ID:dE95R3nJ0.net] 型名のエイリアス宣言と その型のインスタンスの生成 typedef を省略した場合には、全く同じ記述になるんだけど 後者のインスタンスの生成で翻訳してるぜ
608 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:29:26.73 ID:HosRocIl0.net] 通ると思う方がどうかしてる
609 名前: [] [ここ壊れてます]
610 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:32:58.84 ID:LFQQ2ZHvd.net] なぜ通ると思ったのか
611 名前:デフォルトの名無しさん [2017/10/08(日) 19:03:56.08 ID:uO7C8UFXE.net] コーディングスタイルってたくさんあるんですね とりあえず検索したらエリートの人達が使ってそうなものを集めてみました C Coding Standard - CMU (ECE) https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html GNU Coding Standards https://www.gnu.org/prep/standards/html_node/Writing-C.html NASA C Style Guide homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf C Coding Style - GNOME Developer Center https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.en CERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ Linux kernel coding style https://www.kernel.org/doc/html/v4.10/process/coding-style.html どれも難しそうなのでコーディングスタイル見るのやめようと思います。 githubで適当に見ても全然統一されてないし とりあえずインデントは空白8個で{}を省略しないルールだけにしたいと思います。
612 名前:デフォルトの名無しさん [2017/10/08(日) 19:04:57.70 ID:uO7C8UFXE.net] 空白8個なのはメモ帳で見た時にこのくらいだから合わせてるだけです
613 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:18:41.81 ID:PUMPETat0.net] また戦争がしたいのか、アンタは
614 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:26:45.12 ID:+nfO/L5n0.net] 戦闘民族
615 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:30:12.30 ID:HosRocIl0.net] 書いてりゃわかると思うけど8は多すぎ 単に昔のシステムがそうだったと言うだけのことだから4とか2でいいと思う
616 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 19:36:28.95 ID:+nfO/L5n0.net] あーあ
617 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 21:11:10.70 ID:bhcsmcAx0.net] >>573 会社や複数人作業ならそれにあわせる 一人で書く分には何でもいいだろ なんなら、PHPで使ってたスタイルでいいだろ ってか、PHPの時はどうしてたんだよ
618 名前:デフォルトの名無しさん [2017/10/09(月) 01:05:37.72 ID:6VRPxojV0.net] マンデルブロの描画がうまくいきません。ズームするとすぐに単調になってしまいます。 動画 https://youtu.be/Ompp_YwrLPw ソースコード codepad.org/mlm33eRT
619 名前:片山博文MZ mailto:sage [2017/10/09(月) 01:30:56.68 ID:vdfcSFiBd.net] >>609 クリックしたら画面の中心を移動させる。
620 名前:片山博文MZ mailto:sage [2017/10/09(月) 01:32:01.57 ID:vdfcSFiBd.net] ドラッグされたらずらす。
621 名前:デフォルトの名無しさん [2017/10/09(月) 01:53:40.87 ID:6VRPxojV0.net] >>610 一応クリックするとある境界線付近を拡大するようにプログラムに書いてるのですが...
622 名前:片山博文MZ mailto:sage [2017/10/09(月) 03:32:25.69 ID:vdfcSFiBd.net] >>612 環境によって座標系が違うのかも知れない。ずらす値を変えてみては?
623 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 03:39:59.55 ID:69HXGpsc0.net] >>609 単調になるのは k のループ回数が少ないせいでは
624 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 06:38:40.98 ID:hRP3P7r40.net] そうだね k=1000くらいで
625 名前:デフォルトの名無しさん [2017/10/09(月) 08:53:44.75 ID:IXUwPWpS6.net] >>613 変えても同じでした >>614 >>615 なるほど!家に帰ったらやって見ます!
626 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:35:07.86 ID:IkImbMA7a.net] >>594 変数宣言が全てtypedefになるなんて狂気な言語 実例を教えてくれ
627 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:51:45.98 ID:UMVukllE0.net] 俺はこの書き方 if (condition) { } else { }
628 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:55:27.10 ID:pMEz2IHg0.net] コーディングスタイルにこだわる奴は素人。
629 名前:デフォルトの名無しさん [2017/10/09(月) 12:12:59.35 ID:9ioWbZDx6.net] Linuxのソースコードは?
630 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 13:24:11.42 ID:N3YX2Zf80.net] ソース整形ツールの動作オプションの数で眩暈がするぜw
631 名前:デフォルトの名無しさん [2017/10/09(月) 14:12:40.72 ID:98rFBdXp0.net] ■■たびたびお世話になります なにが悪いのかご指摘おねがいします■■ struct I2C_MEM { char DEV_ADR ; char REG_ADR ; char DATA[4] ; } static I2C_MEM[2] ; task02_tst ( struct I2C_MEM *aaa ) { char i,a[2],b[2],c[2]; i = 0 ; while ( i <= 1 ) { aaa -> DEV_ADR ; a[i] = *aaa ; // データタイプがインコンパチでエラーになる char DEV_ADR を参照してくれない? aaa -> REG_ADR ; b[i] = *aaa ; // データタイプがインコンパチでエラーになる char REG_ADR を参照してくれない? aaa -> DATA ; c[i] = *aaa // データタイプがインコンパチでエラーになる char DATA を参照してくれない? p += 1 ; i += 1 ; } }
632 名前:デフォルトの名無しさん [2017/10/09(月) 14:22:20.38 ID:98rFBdXp0.net] ↑単純に関数内で構造体のデータにポインタ+インデックスでアクセスしたい
633 名前:デフォルトの名無しさん [2017/10/09(月) 14:26:06.29 ID:98rFBdXp0.net] 間違い発見 p += 1 ; は aaa += 1 ; に置き換えてください
634 名前:片山博文MZ mailto:sage [2017/10/09(月) 14:39:31.76 ID:vdfcSFiBd.net] >>622 何がしたいのかわからない。 代入の左辺は右辺と互換性のある型じゃないといけないし、配列まるごとの代入はできない。 まずは代入の型をそろえないと。
635 名前:片山博文MZ mailto:sage [2017/10/09(月) 15:09:21.54 ID:vdfcSFiBd.net] char型のデータを代入したいのなら、両辺の型をcharにしないといけないよ。
636 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 15:26:29.02 ID:G+wiEnLh0.net] >>622 > aaa -> DEV_ADR ; > a[i] = *aaa ; 例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない
637 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 15:56:12.50 ID:of8Vs49yM.net] >>622 エスパーするとたぶんこう言うことだと思う task02_tst ( struct I2C_MEM *aaa ){ int i; char a[2],b[2],c[2]; for(i = 0; i < 2; i++){ a[i] = aaa[i].DEV_ADR; b[i] = aaa[i].REG_ADR; c[i] = aaa[i].DATA; // ここは >>627 の言う通りなにをしたいのかよくわからん } }
638 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 17:01:40.23 ID:u+Z6y4O20.net] 初心者相手に表記法を変えると理解しにくいかも。 本質から外れた部分が目についてしまうからね。 int i = 0; while ( i <= 1 ) { a[i] = aaa -> DEV_ADR ; // ポインタaaaが指す構造体の DEV_ADR メンバの値 b[i] = aaa -> REG_ADR ; // ポインタaaaが指す構造体の REG_ADR メンバの値 c[i] = aaa -> DATA ; // c[i] の型と DATA メンバの型が違うからエラー aaa += 1 ; i += 1 ; } てな感じかと。 >>627-628 をまとめただけ、だけど。
639 名前:デフォルトの名無しさん [2017/10/09(月) 17:19:35.64 ID:tFlwnlNI0.net] >>629 c を char *c[2] で宣言しておけばなんとかなるね。
640 名前:デフォルトの名無しさん [2017/10/09(月) 17:34:38.15 ID:98rFBdXp0.net] 皆様 どうもありがとうございます とりあえず代入の書き方が知りたかっただけでありまして ちなみにインデックスを使用した配列メンバーのアクセスなんだけど c[i] = aaa -> DATA +0 ; d[i] = aaa -> DATA +1 ; e[i] = aaa -> DATA +2 ; f[i] = aaa -> DATA +3 ; こんな書き方ってできるの?
641 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 17:44:30.12 ID:N3YX2Zf80.net] ポインタを返す場合はそういう書き方 aaa->DATA+3 ポインタの指してる先を求めたい場合は aaa->DATA[3] 左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに 記述法だけを即物的にトレースするのはとてもまずい
642 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:00:40.01 ID:tNKVEDsJ0.net] task02_tst()の呼び出しが task02_tst(I2C_MEM)なのか task02_tst(&I2C_MEM[1])なのかわからん 前者と仮定するとDEV_ADRにアクセスする方法は 1. (*(aaa + i)).DEV_ADR 2. aaa[i].DEV_ADR 3. (aaa + i)->DEV_ADR なんかが考えられるけど(2は1の糖衣構文)、ドットとアローそれぞれの 左側の違いを理解しないと先には進めないよ
643 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:02:21.36 ID:tda6mQVw0.net] >>631 意図が分からないからマトモに答えら
644 名前:れない 実際に数字入れて教えてくれ 例えば>>622 はI2C_MEM = {4, 8, {0, 1, 2, 3}} でa,b,cはどうなるの? [] [ここ壊れてます]
645 名前:デフォルトの名無しさん [2017/10/12(木) 10:23:33.14 ID:jY+yK3vs6.net] 過疎ってるな
646 名前:デフォルトの名無しさん [2017/10/12(木) 11:18:46.53 ID:mQ4S5/8+0.net] ちょっと質問です ↓下記のようなwhileの中身を複製するために使う実体化されない変数iをコンパイラ制御のための変数と明示する書き方ってあるんですか? task02_tst ( I2C_MEM_typ *p , char i) { char i ; i = 0 ; while ( i < 2 ) { p = p + i ; a[i] = p -> DEV_ADR ; b[i] = p -> REG_ADR ; c[i][0] = p -> DATA[0] ; c[i][1] = p -> DATA[1] ; c[i][2] = p -> DATA[2] ; c[i][3] = p -> DATA[3] ; } }
647 名前:デフォルトの名無しさん [2017/10/12(木) 11:24:19.55 ID:mQ4S5/8+0.net] task02_tst ( I2C_MEM_typ *p ) { char i ; i = 0 ; while ( i < 2 ) { p = p + i ; a[i] = p -> DEV_ADR ; b[i] = p -> REG_ADR ; c[i][0] = p -> DATA[0] ; c[i][1] = p -> DATA[1] ; c[i][2] = p -> DATA[2] ; c[i][3] = p -> DATA[3] ; } } に修正します
648 名前:デフォルトの名無しさん [2017/10/12(木) 11:26:34.34 ID:mQ4S5/8+0.net] task02_tst ( I2C_MEM_typ *p ) { char i ; i = 0 ; while ( i < 2 ) { p = p + i ; a[i] = p -> DEV_ADR ; b[i] = p -> REG_ADR ; c[i][0] = p -> DATA[0] ; c[i][1] = p -> DATA[1] ; c[i][2] = p -> DATA[2] ; c[i][3] = p -> DATA[3] ; i += 1 ; } } に修正します
649 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 11:50:40.24 ID:z+R5CP9n0.net] >>636 先ず日本語をなんとかした方がいい 『whileの中身を複製する』とはどういうことか? 『実体化されない変数』とは何か? 『コンパイラ制御のための変数』とは何か?
650 名前:デフォルトの名無しさん [2017/10/12(木) 12:32:35.60 ID:mQ4S5/8+0.net] こんな感じで構造体をインデックスで指定した転送命令にコンパイルする意図で書いています p = p + i ; //*実体化されない(マシンコード化されない)コード mov a[0] , [構造体I2C_MEMの基底番地+0] mov b[0] , [構造体I2C_MEMの基底番地+1] mov c[0][0] , [構造体I2C_MEMの基底番地+2] : mov c[0][3] , [構造体I2C_MEMの基底番地+5] i += 1 ; //*実体化されない(マシンコード化されない)コード p = p + i ; //*実体化されない(マシンコード化されない)コード mov a[1] , [構造体I2C_MEMの基底番地+6] mov b[1] , [構造体I2C_MEMの基底番地+7] mov c[1][0] , [構造体I2C_MEMの基底番地+8] : mov c[1][3] , [構造体I2C_MEMの基底番地+11] i += 1 ; //*実体化されない(マシンコード化されない)コード ・・・で意図通りコンパイルしてくれるわけですが 実体化されない(メモリー空間またはレジスタファイルにアサインされない)char iの意味が 希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが そんな書き方ある?ということでありまして
651 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 12:41:11.33 ID:Z8zboj8V0.net] 多少は意図した記述に沿って機械語出力するだろうけど、 保障されてるわけでもないし、最適化他でどうなるかもわからん 「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、 (環境によるだろうけど)その部分だけをインラインアセンブラにする
652 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 12:42:56.26 ID:cscfLNVP0.net] memcpy使ったらいいんじゃないの?
653 名前:片山博文MZ mailto:sage [2017/10/12(木) 12:52:32.73 ID:loBt1/dEd.net] volatile
654 名前:デフォルトの名無しさん [2017/10/12(木) 13:04:26.04 ID:mQ4S5/8+0.net] うーーん・・・ volatileは最適化抑止(消すなー!)のための記述と認識しているんですが volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです
655 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 13:37:51.69 ID:jX4dlPv10.net] volatile揮発性の当初の意図は 70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
656 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 13:45:28.14 ID:Z8zboj8V0.net] 実体化するな=機械語としてコードにおくな ということは、言語上での変数を一切使わずに繰り返し展開するような テンプレートやマクロでメタプログラミングしたい って話になるが・・・ #define IMP(idx) do { \ a[idx] = p[idx].DEV_ADR; \ b[idx] = p[idx].REG_ADR; \ : : 以下同じ様に記述 : c[idx][3] = p[idx].DATA[3] ; } whle(0) IMP(0); IMP(1); IMP(2); 変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー 正直ほめられたやりかたじゃないと思うわ
657 名前:デフォルトの名無しさん [2017/10/12(木) 14:25:00.48 ID:1sF6m3D2p.net] 実体化させたく無いものを記述? …スラ二本じゃダメなのか?
658 名前:デフォルトの名無しさん [2017/10/12(木) 14:30:09.97 ID:9bJ1Vwh10.net] そういう話ではないでしょ そもそもループによるコードのキャストは 記述を短縮化するのが目的なんだから キャストのためのループであることをコンパイラに 推論させるための変数指定の仕組みがあるのかな?ってはなし
659 名前:デフォルトの名無しさん [2017/10/12(木) 14:32:07.54 ID:9bJ1Vwh10.net] まあ 指定しなくても現状でコンパイラは推論してるけれどもねw なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです
660 名前:デフォルトの名無しさん [2017/10/12(木) 14:36:32.09 ID:OhN0e73F6.net] 死ねゴミ
661 名前:デフォルトの名無しさん [2017/10/12(木) 14:37:45.66 ID:9bJ1Vwh10.net] なんかすぐ出てこないところをみると そこらへんはコンパイラまかせなのね
662 名前:デフォルトの名無しさん [2017/10/12(木) 14:38:53.90 ID:OhN0e73F6.net] クッサ
663 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 14:45:29.40 ID:Z8zboj8V0.net] 結局 >>639 だったのか・・・
664 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 14:46:41.92 ID:z+R5CP9n0.net] 返答が幾つもついてるのに出てこないとか言っちゃうのは見たいものしか見ない人の典型だね
665 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 14:48:17.07 ID:XqOCC09Fd.net] とりあえずお前には無理だ 諦めな
666 名前:デフォルトの名無しさん [2017/10/12(木) 15:03:43.28 ID:9bJ1Vwh10.net] 大体わかりました ありがとうございました
667 名前:デフォルトの名無しさん [2017/10/12(木) 15:06:24.03 ID:OhN0e73F6.net] 一から10まで足し合わせるプログラムを教えてください。
668 名前:片山博文MZ mailto:sage [2017/10/12(木) 15:10:29.76 ID:loBt1/dEd.net] >>657 #include <stdio.h> int main(void) { int i, n = 0; for (i = 1; i <= 10; ++i) n += i; printf("%d\n", n); return 0; }
669 名前:デフォルトの名無しさん [2017/10/12(木) 15:18:14.51 ID:OhN0e73F6.net] >>658 ありがとうございます!
670 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 18:50:09.63 ID:7bIAw6590.net] 人に思いを正しく伝えられない奴がうまくプログラミングできるとは思えないけど大丈夫なんだろう
671 名前:デフォルトの名無しさん [2017/10/12(木) 20:36:00.66 ID:1sF6m3D2p.net] 俺は逆だと思っている。 人に上手く思いを伝えられないからこそ、 表現手段を駆使して伝えようと努力するんだよな。 絵とか音楽とか、クリエイターってそんな生き物。
672 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 21:49:52.42 ID:wn8w1zGC0.net] >>661 > 絵とか音楽とか、クリエイターってそんな生き物。 全然違う あいつらは自分の思いを伝えられるのは自分の表現法方だけだと思ってる 絵を描く奴で説明文を書いて思いを伝えるやつなんていないだろ
673 名前:デフォルトの名無しさん [2017/10/12(木) 23:57:59.88 ID:5ILt7KpA0.net] >>645 メモリマップドI/Oに使える。特定のアドレスを読むとキーボードで入力した文字が読めるとか、そういうやつ。 読んだ直後に内容が変わる可能性があるので volatile でないとまずい。
674 名前:デフォルトの名無しさん [2017/10/13(金) 00:30:38.46 ID:neFZx4WS0.net] 共有メモリとか mmap() して複数のプロセスまたはスレッドがアクセスする領域も同じか。 あれ? こんなのちょっと前に話題にならなかったか?
675 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 06:51:32.49 ID:txebgbcNM.net] DMAとかもあるわな
676 名前:デフォルトの名無しさん [2017/10/13(金) 12:09:21.29 ID:UePpwGnn0.net] ちょっとお尋ねします char *a ; と記述すると ↓ char a ; 実体化 int (&a) ; 非実体化(コンパイラが使用する変数) が生成される *の概念が無いと char a ; 実体化 int a_point ; 実体化(アドレス長=intとする) a_point = &a ; 実体化 例えばこう書くことになる ポインタは関数内で宣言できる その場合そのポインタの寿命は関数内に限定される こんな感じの認識であってますか?
677 名前:デフォルトの名無しさん [2017/10/13(金) 12:21:34.93 ID:ZC5rLpvkM.net] ポインタの寿命はプログラム内じゃないん?