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/1500293207/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 142 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8a6f-bDrV)
2017/08/10(木) 20:21:23.44ID:hEocmkh50556デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/06(金) 06:22:04.70ID:RySAjNni0 スペルミスかと思ったけど合ってるよな
間違い探し難しい
どこが変?
間違い探し難しい
どこが変?
557デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/06(金) 07:43:06.02ID:p4va+yl10 検索でちゃんと 555 と 546 がヒットするし何か見間違えたんだろうか
558デフォルトの名無しさん (ワッチョイ da8a-jcSU)
2017/10/06(金) 07:45:29.75ID:iQ5MtuBR0 目を細めて見るとstmcpyに… いや無理があるな
559デフォルトの名無しさん (ワッチョイ b68a-uDER)
2017/10/06(金) 08:33:19.91ID:4Iec6HYc0560デフォルトの名無しさん (ワッチョイ da8a-tpYQ)
2017/10/06(金) 09:47:31.52ID:RA0YJgv70 str[n]cpyが最後に0を書く条件は?
memcpyを使わない理由は?
memcpyを使わない理由は?
561デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/06(金) 10:38:12.40ID:EDz06gtM6 自分のミスはスルー
562デフォルトの名無しさん (ワッチョイ 4623-XSap)
2017/10/06(金) 10:39:45.78ID:d6jfQR1X0 strncpyは0で終端される条件が毎回わからなくて敬遠していたんです。
でも、strlcpyを使うようになってから肌年齢が10歳若返りました!
今は毎日がとっても楽しいです。
でも、strlcpyを使うようになってから肌年齢が10歳若返りました!
今は毎日がとっても楽しいです。
563デフォルトの名無しさん (ワッチョイ 0502-5Ff0)
2017/10/06(金) 10:54:46.60ID:U5/7Dlcy0 >>548
おお!センクス!
おお!センクス!
564デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/06(金) 13:16:11.88ID:qH0Ei3hn0565デフォルトの名無しさん (ササクッテロレ Sp75-Zdu/)
2017/10/06(金) 14:05:32.93ID:UT/zOTNDp 何の為にサイズ指定があるか、考えりゃわかるじゃん?
566デフォルトの名無しさん (ワッチョイ b68a-uDER)
2017/10/06(金) 14:53:14.89ID:4Iec6HYc0 >>564
「早く」の意味を調べてからほざきなさい
「早く」の意味を調べてからほざきなさい
567デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/06(金) 15:16:39.88ID:qH0Ei3hn0568デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
2017/10/06(金) 15:20:28.76ID:B4vVDMXU0 うんち!
569デフォルトの名無しさん (ワッチョイ b68a-uDER)
2017/10/06(金) 17:45:14.09ID:4Iec6HYc0570デフォルトの名無しさん (アウアウカー Sa4d-IMWu)
2017/10/06(金) 18:41:01.91ID:fZ4i0/3ka571デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/06(金) 20:42:56.05ID:qH0Ei3hn0572デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/07(土) 14:47:24.49ID:f9dDdlSq0573デフォルトの名無しさん (エーイモ SEda-2JKf)
2017/10/08(日) 10:02:50.14ID:iaWD4MFGE PHPしかできないザコだったけどC言語が楽しい
Cのスタンダードなコーディングスタイルってないですか?
インデントにタブ使ってたりifに{}使ってなかったりするコードをよく見かけますけど
Cのスタンダードなコーディングスタイルってないですか?
インデントにタブ使ってたりifに{}使ってなかったりするコードをよく見かけますけど
574デフォルトの名無しさん (ワッチョイ fdc6-XSap)
2017/10/08(日) 10:09:18.29ID:+nfO/L5n0 戦争でも起こす気か?
575デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 11:30:23.33ID:HosRocIl0576デフォルトの名無しさん (スププ Sdfa-qDdi)
2017/10/08(日) 11:56:53.58ID:SX/6L99bd 戦いの火蓋は切って落とされた
577デフォルトの名無しさん (ブーイモ MMa1-clNK)
2017/10/08(日) 13:00:43.13ID:FR3ELF64M インデントは空白4個だね
578デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
2017/10/08(日) 13:04:33.16ID:SXbZ1Yc30579デフォルトの名無しさん (ワッチョイ 76e8-8BZG)
2017/10/08(日) 13:04:53.34ID:e96mZsST0 >>577
2つで十分ですよ
2つで十分ですよ
580デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
2017/10/08(日) 13:05:13.53ID:SXbZ1Yc30 C++はゴミ
581デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/08(日) 14:51:03.41ID:c+/m9riq0 >>579
いやタブ1つにして表示幅はスペース4つ分だ。
いやタブ1つにして表示幅はスペース4つ分だ。
582デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/08(日) 14:54:49.62ID:c+/m9riq0 >>576
ああ。もうこのスレはスペース開けるか開けないか改行するかしないか何文字にするか中括弧はどうするか行末にバックスラッシュ入れて次行に書くか書かないかgotoどうするか等の話で延々と10年ぐらい費やされるんだろうな。
もちろんエディタの話に飛び火してviがvimがemacsがとなる。
ああ。もうこのスレはスペース開けるか開けないか改行するかしないか何文字にするか中括弧はどうするか行末にバックスラッシュ入れて次行に書くか書かないかgotoどうするか等の話で延々と10年ぐらい費やされるんだろうな。
もちろんエディタの話に飛び火してviがvimがemacsがとなる。
583デフォルトの名無しさん (ワッチョイ 7123-fbES)
2017/10/08(日) 14:55:08.52ID:bhcsmcAx0 スペース一つで充分
584デフォルトの名無しさん (ワッチョイ 76a5-wbjw)
2017/10/08(日) 15:03:04.04ID:Eg4i3QFB0 プログラム終了前にfree()が必要かどうかを忘れちゃいかん。
585デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/08(日) 16:00:19.88ID:tULmhvm40 ちょっと教えてくださいとある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などという変数を使って間接的に宣言するのか? >>
<< うんちくきぼんぬ >>
意味が分からないので解説お願いします
私が負荷した文は<< >>で囲みます
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などという変数を使って間接的に宣言するのか? >>
<< うんちくきぼんぬ >>
586デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 16:03:19.22ID:dE95R3nJ0 struct Person の前に typedef がありそうな雰囲気
587デフォルトの名無しさん (ワッチョイ 558c-v8iM)
2017/10/08(日) 16:13:28.90ID:yi/NbOiJ0588デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 16:38:19.39ID:HosRocIl0 >>584
exit() の前にだろ
exit() の前にだろ
589デフォルトの名無しさん (ワッチョイ b68a-YM+x)
2017/10/08(日) 17:08:17.03ID:F9J/pQ0V0 C++ならtypedefなくても可
多分.cppでビルド通したんだろうね
多分.cppでビルド通したんだろうね
590デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 17:13:11.77ID:dE95R3nJ0591デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/08(日) 17:16:54.10ID:tULmhvm40 なるほどー ありがとうございました
592デフォルトの名無しさん (ワッチョイ b68a-YM+x)
2017/10/08(日) 17:26:51.19ID:F9J/pQ0V0 >>590
C++ではtypedefは不要だよ(別にあっても構わないけど)
structとclassはメンバーのデフォルト設定がpublicかprivateかという違いを除けば構文的には全く同じように使える
structで継承することすら出来る
C++ではtypedefは不要だよ(別にあっても構わないけど)
structとclassはメンバーのデフォルト設定がpublicかprivateかという違いを除けば構文的には全く同じように使える
structで継承することすら出来る
593デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 17:32:00.82ID:dE95R3nJ0 >>592
論点はそこじゃなくて
struct Person { };
Person p;
が C++ では文法として通るのは指摘の通り
質問元の記述では
struct Person { } person_s;
person_s p;
こうなってるから、これじゃ C++ の文法でも通らないでしょうよ ってことで
論点はそこじゃなくて
struct Person { };
Person p;
が C++ では文法として通るのは指摘の通り
質問元の記述では
struct Person { } person_s;
person_s p;
こうなってるから、これじゃ C++ の文法でも通らないでしょうよ ってことで
594デフォルトの名無しさん (ワッチョイ b68a-YM+x)
2017/10/08(日) 17:37:28.39ID:F9J/pQ0V0 通るよ
class宣言ではいちいちtypedefなど使わないのと同じように構造体でもtypedefは省略するのが一般的
むしろ先頭の構造体テンプレート名を省略して最後の型名だけ宣言する場合も多い
class宣言ではいちいちtypedefなど使わないのと同じように構造体でもtypedefは省略するのが一般的
むしろ先頭の構造体テンプレート名を省略して最後の型名だけ宣言する場合も多い
595デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 17:42:06.58ID:dE95R3nJ0596デフォルトの名無しさん (ワッチョイ da8a-jcSU)
2017/10/08(日) 18:04:45.47ID:PUMPETat0 structが省略可能になってtypedefしなくなったのを
typedefが省略可能と間違って覚えてるんじゃないだろうか
typedefが省略可能と間違って覚えてるんじゃないだろうか
598デフォルトの名無しさん (フリッテル MM7e-ahfN)
2017/10/08(日) 18:14:58.26ID:ALuk3l/eM あれ?
通らないのかこれ?
通らないのかこれ?
599デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 18:20:47.85ID:dE95R3nJ0 型名のエイリアス宣言と その型のインスタンスの生成
typedef を省略した場合には、全く同じ記述になるんだけど
後者のインスタンスの生成で翻訳してるぜ
typedef を省略した場合には、全く同じ記述になるんだけど
後者のインスタンスの生成で翻訳してるぜ
600デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 18:29:26.73ID:HosRocIl0 通ると思う方がどうかしてるわ
601デフォルトの名無しさん (スププ Sdfa-qDdi)
2017/10/08(日) 18:32:58.84ID:LFQQ2ZHvd なぜ通ると思ったのか
602デフォルトの名無しさん (エーイモ SEda-2JKf)
2017/10/08(日) 19:03:56.08ID:uO7C8UFXE コーディングスタイルってたくさんあるんですね
とりあえず検索したらエリートの人達が使ってそうなものを集めてみました
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
http://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個で{}を省略しないルールだけにしたいと思います。
とりあえず検索したらエリートの人達が使ってそうなものを集めてみました
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
http://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個で{}を省略しないルールだけにしたいと思います。
603デフォルトの名無しさん (エーイモ SEda-2JKf)
2017/10/08(日) 19:04:57.70ID:uO7C8UFXE 空白8個なのはメモ帳で見た時にこのくらいだから合わせてるだけです
604デフォルトの名無しさん (ワッチョイ da8a-jcSU)
2017/10/08(日) 19:18:41.81ID:PUMPETat0 また戦争がしたいのか、アンタは
605デフォルトの名無しさん (ワッチョイ fdc6-XSap)
2017/10/08(日) 19:26:45.12ID:+nfO/L5n0 戦闘民族
606デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 19:30:12.30ID:HosRocIl0 書いてりゃわかると思うけど8は多すぎ
単に昔のシステムがそうだったと言うだけのことだから4とか2でいいと思う
単に昔のシステムがそうだったと言うだけのことだから4とか2でいいと思う
607デフォルトの名無しさん (ワッチョイ fdc6-XSap)
2017/10/08(日) 19:36:28.95ID:+nfO/L5n0 あーあ
608デフォルトの名無しさん (ワッチョイ 7123-fbES)
2017/10/08(日) 21:11:10.70ID:bhcsmcAx0609デフォルトの名無しさん (ワッチョイ 7575-5Ff0)
2017/10/09(月) 01:05:37.72ID:6VRPxojV0 マンデルブロの描画がうまくいきません。ズームするとすぐに単調になってしまいます。
動画
https://youtu.be/Ompp_YwrLPw
ソースコード
http://codepad.org/mlm33eRT
動画
https://youtu.be/Ompp_YwrLPw
ソースコード
http://codepad.org/mlm33eRT
610片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 01:30:56.68ID:vdfcSFiBd >>609
クリックしたら画面の中心を移動させる。
クリックしたら画面の中心を移動させる。
611片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 01:32:01.57ID:vdfcSFiBd ドラッグされたらずらす。
612デフォルトの名無しさん (ワッチョイ 7575-5Ff0)
2017/10/09(月) 01:53:40.87ID:6VRPxojV0 >>610
一応クリックするとある境界線付近を拡大するようにプログラムに書いてるのですが...
一応クリックするとある境界線付近を拡大するようにプログラムに書いてるのですが...
613片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 03:32:25.69ID:vdfcSFiBd >>612
環境によって座標系が違うのかも知れない。ずらす値を変えてみては?
環境によって座標系が違うのかも知れない。ずらす値を変えてみては?
614デフォルトの名無しさん (ワッチョイ 558c-v8iM)
2017/10/09(月) 03:39:59.55ID:69HXGpsc0 >>609
単調になるのは k のループ回数が少ないせいでは
単調になるのは k のループ回数が少ないせいでは
615デフォルトの名無しさん (ワッチョイ da7c-yS8h)
2017/10/09(月) 06:38:40.98ID:hRP3P7r40 そうだね k=1000くらいで
616デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/09(月) 08:53:44.75ID:IXUwPWpS6617デフォルトの名無しさん (アウアウカー Sa4d-xgRF)
2017/10/09(月) 09:35:07.86ID:IkImbMA7a618デフォルトの名無しさん (ワッチョイ 6955-clNK)
2017/10/09(月) 09:51:45.98ID:UMVukllE0 俺はこの書き方
if (condition) {
}
else {
}
if (condition) {
}
else {
}
619デフォルトの名無しさん (ワッチョイ 459e-G6mq)
2017/10/09(月) 09:55:27.10ID:pMEz2IHg0 コーディングスタイルにこだわる奴は素人。
620デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/09(月) 12:12:59.35ID:9ioWbZDx6 Linuxのソースコードは?
621デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/09(月) 13:24:11.42ID:N3YX2Zf80 ソース整形ツールの動作オプションの数で眩暈がするぜw
622デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:12:40.72ID:98rFBdXp0 ■■たびたびお世話になります なにが悪いのかご指摘おねがいします■■
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 ;
}
}
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 ;
}
}
623デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:22:20.38ID:98rFBdXp0 ↑単純に関数内で構造体のデータにポインタ+インデックスでアクセスしたい
624デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:26:06.29ID:98rFBdXp0 間違い発見
p += 1 ; は aaa += 1 ; に置き換えてください
p += 1 ; は aaa += 1 ; に置き換えてください
625片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 14:39:31.76ID:vdfcSFiBd626片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 15:09:21.54ID:vdfcSFiBd char型のデータを代入したいのなら、両辺の型をcharにしないといけないよ。
627デフォルトの名無しさん (ワッチョイ 5ae1-bBfX)
2017/10/09(月) 15:26:29.02ID:G+wiEnLh0 >>622
> aaa -> DEV_ADR ;
> a[i] = *aaa ;
例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う
ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない
> aaa -> DEV_ADR ;
> a[i] = *aaa ;
例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う
ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない
628デフォルトの名無しさん (ドコグロ MM0d-Nz6W)
2017/10/09(月) 15:56:12.50ID:of8Vs49yM629デフォルトの名無しさん (ワッチョイ 5593-Xc0J)
2017/10/09(月) 17:01:40.23ID:u+Z6y4O20 初心者相手に表記法を変えると理解しにくいかも。
本質から外れた部分が目についてしまうからね。
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 をまとめただけ、だけど。
本質から外れた部分が目についてしまうからね。
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 をまとめただけ、だけど。
630デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/09(月) 17:19:35.64ID:tFlwnlNI0 >>629
c を char *c[2] で宣言しておけばなんとかなるね。
c を char *c[2] で宣言しておけばなんとかなるね。
631デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 17:34:38.15ID:98rFBdXp0 皆様 どうもありがとうございます
とりあえず代入の書き方が知りたかっただけでありまして
ちなみにインデックスを使用した配列メンバーのアクセスなんだけど
c[i] = aaa -> DATA +0 ;
d[i] = aaa -> DATA +1 ;
e[i] = aaa -> DATA +2 ;
f[i] = aaa -> DATA +3 ;
こんな書き方ってできるの?
とりあえず代入の書き方が知りたかっただけでありまして
ちなみにインデックスを使用した配列メンバーのアクセスなんだけど
c[i] = aaa -> DATA +0 ;
d[i] = aaa -> DATA +1 ;
e[i] = aaa -> DATA +2 ;
f[i] = aaa -> DATA +3 ;
こんな書き方ってできるの?
632デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/09(月) 17:44:30.12ID:N3YX2Zf80 ポインタを返す場合はそういう書き方
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]
左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]
左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい
633デフォルトの名無しさん (ワッチョイ 958a-j1W8)
2017/10/09(月) 18:00:40.01ID:tNKVEDsJ0 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の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ
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の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ
634デフォルトの名無しさん (ワッチョイ 9dc3-evb8)
2017/10/09(月) 18:02:21.36ID:tda6mQVw0635デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 10:23:33.14ID:jY+yK3vs6 過疎ってるな
636デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:18:46.53ID:mQ4S5/8+0 ちょっと質問です
↓下記のような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] ;
}
}
↓下記のような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] ;
}
}
637デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:24:19.55ID:mQ4S5/8+0 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] ;
}
}
に修正します
{
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] ;
}
}
に修正します
638デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:26:34.34ID:mQ4S5/8+0 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 ;
}
}
に修正します
{
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 ;
}
}
に修正します
639デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/12(木) 11:50:40.24ID:z+R5CP9n0640デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 12:32:35.60ID:mQ4S5/8+0 こんな感じで構造体をインデックスで指定した転送命令にコンパイルする意図で書いています
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の意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして
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の意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして
641デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 12:41:11.33ID:Z8zboj8V0 多少は意図した記述に沿って機械語出力するだろうけど、
保障されてるわけでもないし、最適化他でどうなるかもわからん
「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする
保障されてるわけでもないし、最適化他でどうなるかもわからん
「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする
642デフォルトの名無しさん (ワッチョイ 13cf-HoIg)
2017/10/12(木) 12:42:56.26ID:cscfLNVP0 memcpy使ったらいいんじゃないの?
643片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/12(木) 12:52:32.73ID:loBt1/dEd volatile
644デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 13:04:26.04ID:mQ4S5/8+0 うーーん・・・
volatileは最適化抑止(消すなー!)のための記述と認識しているんですが
volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです
volatileは最適化抑止(消すなー!)のための記述と認識しているんですが
volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです
645デフォルトの名無しさん (ワッチョイ 1312-B6a6)
2017/10/12(木) 13:37:51.69ID:jX4dlPv10 volatile揮発性の当初の意図は
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
646デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 13:45:28.14ID:Z8zboj8V0 実体化するな=機械語としてコードにおくな
ということは、言語上での変数を一切使わずに繰り返し展開するような
テンプレートやマクロでメタプログラミングしたい って話になるが・・・
#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);
変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ
ということは、言語上での変数を一切使わずに繰り返し展開するような
テンプレートやマクロでメタプログラミングしたい って話になるが・・・
#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);
変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ
647デフォルトの名無しさん (ササクッテロレ Sp45-NqOW)
2017/10/12(木) 14:25:00.48ID:1sF6m3D2p 実体化させたく無いものを記述?
…スラ二本じゃダメなのか?
…スラ二本じゃダメなのか?
648デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:30:09.97ID:9bJ1Vwh10 そういう話ではないでしょ
そもそもループによるコードのキャストは
記述を短縮化するのが目的なんだから
キャストのためのループであることをコンパイラに
推論させるための変数指定の仕組みがあるのかな?ってはなし
そもそもループによるコードのキャストは
記述を短縮化するのが目的なんだから
キャストのためのループであることをコンパイラに
推論させるための変数指定の仕組みがあるのかな?ってはなし
649デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:32:07.54ID:9bJ1Vwh10 まあ 指定しなくても現状でコンパイラは推論してるけれどもねw
なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです
なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです
650デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 14:36:32.09ID:OhN0e73F6 死ねゴミ
651デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:37:45.66ID:9bJ1Vwh10 なんかすぐ出てこないところをみると
そこらへんはコンパイラまかせなのね
そこらへんはコンパイラまかせなのね
652デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 14:38:53.90ID:OhN0e73F6 クッサ
653デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 14:45:29.40ID:Z8zboj8V0 結局 >>639 だったのか・・・
654デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/12(木) 14:46:41.92ID:z+R5CP9n0 返答が幾つもついてるのに出てこないとか言っちゃうのは見たいものしか見ない人の典型だね
655デフォルトの名無しさん (スップ Sd33-BnQ2)
2017/10/12(木) 14:48:17.07ID:XqOCC09Fd とりあえずお前には無理だ
諦めな
諦めな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 ★2 [少考さん★]
- 「働いて働いて」の流行語大賞に懸念 「言葉が独り歩き」 過労自殺遺族 [尺アジ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 【画像】消えた美人女優 上原多香子さん(42)、沖縄で目撃される [牛丼★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- 【悲報】高市早苗、被災民に対し「自分の命くらいは自分で守ってくださいね」と切り捨てし大炎上 [339712612]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★1
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★2
- 【高市悲報】JA、発狂www「臨時に経費率を下げるので、どうかお米券を使ってください」 [246620176]
- 千晴より早く俺がレスナンバー4を取るスレ
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★2
