エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
770デフォルトの名無しさん
2018/11/10(土) 21:37:40.22ID:D3ftxXru771デフォルトの名無しさん
2018/11/10(土) 21:39:45.42ID:p/77GMIT772デフォルトの名無しさん
2018/11/10(土) 21:45:54.25ID:9vqEahoA >>768
C++は近年追加された仕様の方が複雑怪奇で迷走しているという意見もあるし、勝手な思い込みで基礎を蔑ろにするのはやめた方がいい。
constの理解についても、組み込みのCをやった経験に基づく自分の経験と思い込みを当然のものとして他人の話を聞くから理解が進まないのでは?
RAMにおくかROMに置くかとかも本来はC言語としては未定義とか処理系依存な部分であって、組み込みにおける常識をベースにCの言語仕様を理解しようとするから齟齬が生まれるのだと思う。
C++は近年追加された仕様の方が複雑怪奇で迷走しているという意見もあるし、勝手な思い込みで基礎を蔑ろにするのはやめた方がいい。
constの理解についても、組み込みのCをやった経験に基づく自分の経験と思い込みを当然のものとして他人の話を聞くから理解が進まないのでは?
RAMにおくかROMに置くかとかも本来はC言語としては未定義とか処理系依存な部分であって、組み込みにおける常識をベースにCの言語仕様を理解しようとするから齟齬が生まれるのだと思う。
773デフォルトの名無しさん
2018/11/10(土) 21:48:12.38ID:bQHYOdt1 >>761でよかったのか
まあ腑に落ちたようでなにより
まあ腑に落ちたようでなにより
774デフォルトの名無しさん
2018/11/10(土) 21:48:35.96ID:dq/THaAw 組み込みだってconst変数がRAMに置かれるなんて常識は無いよ。この人の思い込み。
775デフォルトの名無しさん
2018/11/10(土) 22:12:42.07ID:mjExs0JA このスレにいるような低学歴知恵遅れは
引数だけでなくメソッドにもconstつけるべきというのすら分かってない
クラスの引数にconstつける意味を分かってなさそうだからな
引数だけでなくメソッドにもconstつけるべきというのすら分かってない
クラスの引数にconstつける意味を分かってなさそうだからな
776デフォルトの名無しさん
2018/11/10(土) 23:08:29.94ID:yzCMB8/E セクション配置の話なのにメソッドのconst関係ねーだろ
意味わかってないのはてめーだ、いつものことだが
意味わかってないのはてめーだ、いつものことだが
777デフォルトの名無しさん
2018/11/10(土) 23:17:52.02ID:mjExs0JA やっぱり低学歴知恵遅れはなにも分かってない
778デフォルトの名無しさん
2018/11/11(日) 02:36:59.36ID:ARqR0CiK bss セクションは、リンカの文書を見れば?
メモリ配置と、文法のconst は関係ない。
基本的に、言語の文法と実装は、関係ない
実装は、JavaScript の文法に関係ない、DOM とか
できる限り、const を使うべき!
使っても、マイナスにはならないから
たぶん、Effective 本にも書いてある
メモリ配置と、文法のconst は関係ない。
基本的に、言語の文法と実装は、関係ない
実装は、JavaScript の文法に関係ない、DOM とか
できる限り、const を使うべき!
使っても、マイナスにはならないから
たぶん、Effective 本にも書いてある
779デフォルトの名無しさん
2018/11/11(日) 05:11:06.80ID:mI2pOyKp >組み込みだってconst変数がRAMに置かれるなんて常識は無いよ。この人の思い込み。
そのことを初心者にもわかるように詳しく説明してみてください。といっても解り過ぎている人には
初心者が何がわからないのかわからないとおもう。解らない人はどこまでもわからない。なので
質問を変えて差しあげます。
質問1.constは多用な機能がある。そしてその機能を実現するには最初の一回だけは書き換え
可能である必要があると思うが、もしconstをROMに配置してその機能をどう実現すればいいのだろうか?
実現不可能だとおもう。
このことが正しいならconstは当然RAMに配置されるのが常識だろう。いかがだろうか?
質問2.もしconstが一度も書き換え可能である必要がないとすれば、constはROMに配置
されるべきだろう。だからconstは必ずROMに配置すべきだというのが常識となる。この考えは
どこがまちがっているだろうか?
質問3.質問1と質問2の前提はどちらが正しいのだろうか?
そのことを初心者にもわかるように詳しく説明してみてください。といっても解り過ぎている人には
初心者が何がわからないのかわからないとおもう。解らない人はどこまでもわからない。なので
質問を変えて差しあげます。
質問1.constは多用な機能がある。そしてその機能を実現するには最初の一回だけは書き換え
可能である必要があると思うが、もしconstをROMに配置してその機能をどう実現すればいいのだろうか?
実現不可能だとおもう。
このことが正しいならconstは当然RAMに配置されるのが常識だろう。いかがだろうか?
質問2.もしconstが一度も書き換え可能である必要がないとすれば、constはROMに配置
されるべきだろう。だからconstは必ずROMに配置すべきだというのが常識となる。この考えは
どこがまちがっているだろうか?
質問3.質問1と質問2の前提はどちらが正しいのだろうか?
780デフォルトの名無しさん
2018/11/11(日) 05:52:29.65ID:mI2pOyKp 完璧な質問のつもりだったが、質問を書いてみて今初めて見落としている穴が分かった。
781デフォルトの名無しさん
2018/11/11(日) 06:05:13.74ID:zHXRpmYL 質問して最後に分かるつまり
ケツの穴である
ケツの穴である
782デフォルトの名無しさん
2018/11/11(日) 09:46:34.66ID:mI2pOyKp >>772
C++は低レベルの処理に向いているのだから当然のように処理系のハードとの接点が多い。
処理系依存の部分はC++でフォローできないというだけで、だからといって処理系を意識しないでいい
ということにはならない。C++を使う場合には処理系を強く意識する必要がある。
>できる限り、const を使うべき! 使っても、マイナスにはならないから
処理系を強く意識するなら、こういう結論にはならないと思う。constは意に反してRAMに配置され得る。
組み込み系においては、RAMを多用すればすぐにRAMがパンクする。
constはいくつかのメリットがあることは解ったが、無条件に使えばやはり有害になる。少なくとも自分が使った
限りでは滅茶滅茶有害だった。
では被害を少なくするにはどうすればよいか? それに答えてほしい。
static const char* s_A; // -> BSS section
static const char* s_B = "b";// -> Data section
static const char* const s_C = "c";// -> Data section
static const char s_D[] = "d";// -> Read only Data section
static char s_E[] = "e";// -> Data section
static char s_F[128]; // -> BSS section
const char* s_B = "b";// -> ここで嵌った。これは.bssに配置される。
C++は低レベルの処理に向いているのだから当然のように処理系のハードとの接点が多い。
処理系依存の部分はC++でフォローできないというだけで、だからといって処理系を意識しないでいい
ということにはならない。C++を使う場合には処理系を強く意識する必要がある。
>できる限り、const を使うべき! 使っても、マイナスにはならないから
処理系を強く意識するなら、こういう結論にはならないと思う。constは意に反してRAMに配置され得る。
組み込み系においては、RAMを多用すればすぐにRAMがパンクする。
constはいくつかのメリットがあることは解ったが、無条件に使えばやはり有害になる。少なくとも自分が使った
限りでは滅茶滅茶有害だった。
では被害を少なくするにはどうすればよいか? それに答えてほしい。
static const char* s_A; // -> BSS section
static const char* s_B = "b";// -> Data section
static const char* const s_C = "c";// -> Data section
static const char s_D[] = "d";// -> Read only Data section
static char s_E[] = "e";// -> Data section
static char s_F[128]; // -> BSS section
const char* s_B = "b";// -> ここで嵌った。これは.bssに配置される。
783デフォルトの名無しさん
2018/11/11(日) 10:28:56.96ID:R/5kDxSy ID:mI2pOyKp = ID:p/77GMIT
784デフォルトの名無しさん
2018/11/11(日) 13:40:16.62ID:96wp+TZd '\0' と L'\0' って違うんだな
785デフォルトの名無しさん
2018/11/11(日) 13:56:09.62ID:D6x0hMat すいません、C++でゲームやGUIアプリなどを開発したいのですが
メソッド抽出やクラス設計といったプログラム設計に関する書籍って
どんなものを読めばいいんでしょうか?おすすめとかありますか?
ググっても、プログラム設計の本があまり見つかりませんでした・・
デザインパターンに関するものはあったんですが
もうすこし初歩的な内容のものがあれば教えてくださいm(__)m
メソッド抽出やクラス設計といったプログラム設計に関する書籍って
どんなものを読めばいいんでしょうか?おすすめとかありますか?
ググっても、プログラム設計の本があまり見つかりませんでした・・
デザインパターンに関するものはあったんですが
もうすこし初歩的な内容のものがあれば教えてくださいm(__)m
786デフォルトの名無しさん
2018/11/11(日) 14:37:43.40ID:heRDhQmF >>784
L'\0' はUnicodeだから、必ず2バイトなので、 0x0000
L'\0' はUnicodeだから、必ず2バイトなので、 0x0000
787はちみつ餃子 ◆8X2XSCHEME
2018/11/11(日) 14:45:39.68ID:u4gHMHSK >>786
ワイド文字の内訳は未定義で、 Unicode になるとは限らないし、その大きさも決まってない。
2 バイトになって欲しいなら L ではなく u を使うと UTF-16 になることは保証されるよ。
ワイド文字の内訳は未定義で、 Unicode になるとは限らないし、その大きさも決まってない。
2 バイトになって欲しいなら L ではなく u を使うと UTF-16 になることは保証されるよ。
788デフォルトの名無しさん
2018/11/11(日) 14:47:19.00ID:FGv1lmue789デフォルトの名無しさん
2018/11/11(日) 16:46:50.89ID:FyMTXkCl >>782
> const char* s_B = "b";// -> ここで嵌った。これは.bssに配置される。
s_Bはconst宣言されてない只の変数だからいいとして
"b"がconstだけど.bssに配置されるってこと?
> const char* s_B = "b";// -> ここで嵌った。これは.bssに配置される。
s_Bはconst宣言されてない只の変数だからいいとして
"b"がconstだけど.bssに配置されるってこと?
790デフォルトの名無しさん
2018/11/11(日) 17:54:46.45ID:96wp+TZd791デフォルトの名無しさん
2018/11/11(日) 21:39:09.29ID:+3cDuFRf >>785
The Craft of Text Editing
The Craft of Text Editing
792デフォルトの名無しさん
2018/11/11(日) 21:59:31.70ID:YkGULP39 それ、C++でもないただのCでEmacs風エディタ作るっていう古臭い本だろ。
しかも一般的な設計論みたいなものはほとんどなくてエディタの実装テクニックがメイン。
しかも一般的な設計論みたいなものはほとんどなくてエディタの実装テクニックがメイン。
793デフォルトの名無しさん
2018/11/11(日) 22:09:04.04ID:+3cDuFRf 本当に読んだ事があればそんな感想にならないと思う
794はちみつ餃子 ◆8X2XSCHEME
2018/11/12(月) 01:54:44.09ID:Y5bf1y1v795デフォルトの名無しさん
2018/11/12(月) 03:01:49.28ID:+lslfuGS そういうのはお母さんに頼めよ
796デフォルトの名無しさん
2018/11/12(月) 06:57:24.59ID:kRp5sQt8 使えねえコテだわ
797デフォルトの名無しさん
2018/11/12(月) 14:29:20.92ID:AHq3PbYw 初心者です。
bool変数hogeの真偽で反対の代入をする場合につきまして、
int a, b;
if (hoge) { a=1; b=2; } else { a=2; a=1; }
と
int a=1, b=2;
if (! hoge) { a=2; a=1; }
はどちらのほうが好ましい書き方ですか?
完全に好みの問題ですか?
bool変数hogeの真偽で反対の代入をする場合につきまして、
int a, b;
if (hoge) { a=1; b=2; } else { a=2; a=1; }
と
int a=1, b=2;
if (! hoge) { a=2; a=1; }
はどちらのほうが好ましい書き方ですか?
完全に好みの問題ですか?
798デフォルトの名無しさん
2018/11/12(月) 14:48:27.20ID:pBxTFjIu 訊くなら正確に書いてくれ
799デフォルトの名無しさん
2018/11/12(月) 15:37:05.52ID:D6ILV7Jx >>797
偽(false)の時だけならif(!hoge){...}の方。
偽(false)の時だけならif(!hoge){...}の方。
800デフォルトの名無しさん
2018/11/12(月) 15:38:56.82ID:Tf74ZWQr 新スレを作りました。利用してください。
0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/
***********************************************************************
1 名前:デフォルトの名無しさん[] 投稿日:2018/11/12(月) 14:55:13.35 ID:Tf74ZWQr
何にも知らない0からの出発、超初心者のためのC++相談室
***********************************************************************
0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/
***********************************************************************
1 名前:デフォルトの名無しさん[] 投稿日:2018/11/12(月) 14:55:13.35 ID:Tf74ZWQr
何にも知らない0からの出発、超初心者のためのC++相談室
***********************************************************************
801デフォルトの名無しさん
2018/11/12(月) 17:46:22.89ID:AHq3PbYw802785
2018/11/12(月) 18:39:23.46ID:x/TsFEZq803デフォルトの名無しさん
2018/11/12(月) 18:44:42.38ID:D6ILV7Jx >>801
そこまで初心者なら一回GP0触った方がいいかもね。
PG0がプログラミング研修に向いている理由
https://qiita.com/nakka_/items/16c99e3279c87a70fafc
そこまで初心者なら一回GP0触った方がいいかもね。
PG0がプログラミング研修に向いている理由
https://qiita.com/nakka_/items/16c99e3279c87a70fafc
804デフォルトの名無しさん
2018/11/12(月) 20:59:20.33ID:CbD+/v6g int a=1;
int b=2;
if (!hoge) {
const int c = a;
a=b;
b=c;
}
俺だったらこうかな。
int b=2;
if (!hoge) {
const int c = a;
a=b;
b=c;
}
俺だったらこうかな。
805デフォルトの名無しさん
2018/11/13(火) 18:27:28.63ID:90McxFB4 >>796
+1
+1
806デフォルトの名無しさん
2018/11/13(火) 18:30:06.08ID:90McxFB4 >>797
int a, b = 2 - !!hoge, 1 + !!hoge;
int a, b = 2 - !!hoge, 1 + !!hoge;
807デフォルトの名無しさん
2018/11/13(火) 18:38:22.78ID:ZGzDar6q ここは、初心者を歓迎するスレ
初心者を虐めてどうする
初心者を虐めてどうする
808デフォルトの名無しさん
2018/11/13(火) 21:24:39.67ID:2zv/Jtnj >>807
最近やたら気になるみたいだけど、なんで自分は初心者に回答してあげないの?
最近やたら気になるみたいだけど、なんで自分は初心者に回答してあげないの?
809デフォルトの名無しさん
2018/11/13(火) 22:19:44.32ID:kE0CzrCg >>797
多人数で開発する場合は、前者のほうが好まれると思います。
可読性が高いのでコードレビューしやすいですし、改修もしやすいです。
後者は、1行目と2行目の間で、aかbの値を変更する改修が入ってしまうと
2行目のif文に入らない場合に、望む結果が得られません。
プログラマになりたいとかでなければどっちでもいいと思いますが
難しい書き方をすると、時間経って読み返したときに、
自分でも何を書いたかわからなくなりますよw
多人数で開発する場合は、前者のほうが好まれると思います。
可読性が高いのでコードレビューしやすいですし、改修もしやすいです。
後者は、1行目と2行目の間で、aかbの値を変更する改修が入ってしまうと
2行目のif文に入らない場合に、望む結果が得られません。
プログラマになりたいとかでなければどっちでもいいと思いますが
難しい書き方をすると、時間経って読み返したときに、
自分でも何を書いたかわからなくなりますよw
>>797
else を使わなくて済むのなら、そうしたほうがいい、とはよくききます
else を使わなくて済むのなら、そうしたほうがいい、とはよくききます
811デフォルトの名無しさん
2018/11/14(水) 00:10:43.22ID:sDCxHRwn 聞いたことねえなあ
812はちみつ餃子 ◆8X2XSCHEME
2018/11/14(水) 02:13:50.61ID:I7yQY6ax >>797
状況によっても違ってくると思う。 一般的には前者だろうけど、
{ a=2; a=1; } が例外的な場合として特別扱いしてるってことを強調したい理由があるなら後者で書くこともあるかもしれん。
状況によっても違ってくると思う。 一般的には前者だろうけど、
{ a=2; a=1; } が例外的な場合として特別扱いしてるってことを強調したい理由があるなら後者で書くこともあるかもしれん。
813デフォルトの名無しさん
2018/11/14(水) 02:36:40.11ID:JMGKlnVy いや、効率を考えたら断然最初の else を使う方では?
後者のやり方では hoge が偽の場合、無駄な代入をすることになる
もっともコンパイラが賢ければ無意味な代入を端折るコードを生成するかもしれんけど
後者のやり方では hoge が偽の場合、無駄な代入をすることになる
もっともコンパイラが賢ければ無意味な代入を端折るコードを生成するかもしれんけど
814デフォルトの名無しさん
2018/11/14(水) 02:38:54.17ID:JMGKlnVy すまん自己レス
> もっともコンパイラが賢ければ無意味な代入を端折るコードを生成するかもしれんけど
これはムリだった。てことでやっぱり前者
> もっともコンパイラが賢ければ無意味な代入を端折るコードを生成するかもしれんけど
これはムリだった。てことでやっぱり前者
815デフォルトの名無しさん
2018/11/14(水) 05:51:53.25ID:AO05/l3R >>814
clangで試したらきちんと最適化されたぞ
clangで試したらきちんと最適化されたぞ
816デフォルトの名無しさん
2018/11/14(水) 11:29:46.12ID:Hh1ptiAj 設計者の意図が伝わりやすいのは前者
817デフォルトの名無しさん
2018/11/14(水) 11:45:30.11ID:ND9bKuyE int a=1;
if(!hoge){
a=2;
}
のa=1は通常の代入じゃないからね。
これは基準値で初期化しんだからよ。
こっちのが効率は良いよ。
if(!hoge){
a=2;
}
のa=1は通常の代入じゃないからね。
これは基準値で初期化しんだからよ。
こっちのが効率は良いよ。
818デフォルトの名無しさん
2018/11/14(水) 11:49:18.98ID:484vhzMZ int a = hoge? 1 : 2;
はどう?
はどう?
819デフォルトの名無しさん
2018/11/14(水) 12:07:57.04ID:XWwMTSMS 多分タイポでa,bの値を条件によって入れ替える処理だと思うぞ。
820デフォルトの名無しさん
2018/11/14(水) 12:08:42.29ID:zVp4oIsl int a = 1 * (!hoge) + 2 * (!!hoge);
線型代数
線型代数
821デフォルトの名無しさん
2018/11/14(水) 12:58:55.38ID:4JKzq5B5 >>817
機械語に直したらどっちもmovでしょ
機械語に直したらどっちもmovでしょ
822デフォルトの名無しさん
2018/11/14(水) 13:41:43.62ID:B+lK3N2V >>815
どういう最適化?
初期化されても参照される前に代入が起こる可能性があるから
hoge の判定の後まで初期化を遅延させる、つまり実質 else を使ったのと
同じコードが生成されるということかな?
そこまで出来そうな気もしなかったのだけど
どういう最適化?
初期化されても参照される前に代入が起こる可能性があるから
hoge の判定の後まで初期化を遅延させる、つまり実質 else を使ったのと
同じコードが生成されるということかな?
そこまで出来そうな気もしなかったのだけど
823デフォルトの名無しさん
2018/11/14(水) 15:05:08.52ID:sW4kyFkZ 初期値として意味があるなら後者でいい気はするが
なんか例が微妙というか、プログラムの流れがなんか不自然
なんか例が微妙というか、プログラムの流れがなんか不自然
824デフォルトの名無しさん
2018/11/14(水) 15:14:44.43ID:XWwMTSMS だよね。
だからやっぱタイプミス(タイポ)で条件によってa,bを入れ替える/入れ替えないを切り替える処理と見た方が自然。
だからやっぱタイプミス(タイポ)で条件によってa,bを入れ替える/入れ替えないを切り替える処理と見た方が自然。
825デフォルトの名無しさん
2018/11/14(水) 20:24:55.58ID:PBXirj6B >>822
797の後者のコードがLLVM IR 2命令に最適化される
%2 = select i1 %0, i32 1, i32 2
%3 = select i1 %0, i32 2, i32 1
%0がhoge、%2がa、%3がbにあたる
797の後者のコードがLLVM IR 2命令に最適化される
%2 = select i1 %0, i32 1, i32 2
%3 = select i1 %0, i32 2, i32 1
%0がhoge、%2がa、%3がbにあたる
826デフォルトの名無しさん
2018/11/14(水) 21:42:49.91ID:1o5yT6ol >>825
ありがとう。なるほど、すばらしい
これをまんまC/C++に書き戻すと
int a = hoge ? 1 : 2;
int b = hoge ? 2 : 1;
ということかな
でもこれだとhoge を2回チェックしてるので却って非効率な気もするけど
まぁ LLVM はまだ中間形式だから、これをターゲットコードに落とすところで
hoge の判定を一回で済ませるようにさらに最適化するのは簡単そうではあるね
ありがとう。なるほど、すばらしい
これをまんまC/C++に書き戻すと
int a = hoge ? 1 : 2;
int b = hoge ? 2 : 1;
ということかな
でもこれだとhoge を2回チェックしてるので却って非効率な気もするけど
まぁ LLVM はまだ中間形式だから、これをターゲットコードに落とすところで
hoge の判定を一回で済ませるようにさらに最適化するのは簡単そうではあるね
827デフォルトの名無しさん
2018/11/14(水) 21:44:23.61ID:1o5yT6ol とは言え C/C++は効率ファーストな言語なんで、最適化を当てにして
ユルいコードでOK、てのも如何なものかという気はする
最適化は所詮、処理系依存だし
まぁ >>823 の言うように、その値で初期化することに強い意味があるなら
その書き方を優先する、そういうトレードオフがあることは認めるけど
ユルいコードでOK、てのも如何なものかという気はする
最適化は所詮、処理系依存だし
まぁ >>823 の言うように、その値で初期化することに強い意味があるなら
その書き方を優先する、そういうトレードオフがあることは認めるけど
828デフォルトの名無しさん
2018/11/15(木) 08:33:27.40ID:4fKxVed7 そんな細かい最適化は困ってから気にすればいい
829デフォルトの名無しさん
2018/11/15(木) 08:49:34.01ID:s3tKWUx8 後から見て意図がわかるならドッチでもいいや
830デフォルトの名無しさん
2018/11/15(木) 09:03:11.75ID:Y+nNeoCF hoge ? a = 1, b = 2 : a = 2, b = 1;
ができればな
ができればな
831デフォルトの名無しさん
2018/11/15(木) 09:06:57.93ID:1bc0l4Fz >>830
カッコつけて試せ
カッコつけて試せ
832デフォルトの名無しさん
2018/11/15(木) 09:08:20.15ID:Y+nNeoCF カッコつけてもカッコ悪いからやめとくわ
833デフォルトの名無しさん
2018/11/15(木) 16:41:41.66ID:APQKN+QS >>829
もちろん原則論に過ぎないよ
あと、原則論と言えば「変数は定義時点で必ず初期化せよ」というのもあるわけで
初期化忘れを防ぐためにそういうコーディングルールを設けている所も多いはず
その場合は後者の方が望ましいことになる
初心者はむしろ効率より堅牢性を重視した方がいいかもね
もちろん原則論に過ぎないよ
あと、原則論と言えば「変数は定義時点で必ず初期化せよ」というのもあるわけで
初期化忘れを防ぐためにそういうコーディングルールを設けている所も多いはず
その場合は後者の方が望ましいことになる
初心者はむしろ効率より堅牢性を重視した方がいいかもね
834デフォルトの名無しさん
2018/11/15(木) 18:14:33.63ID:/yCJioVE >>830-831
副作用でるやつ
副作用でるやつ
835デフォルトの名無しさん
2018/11/15(木) 22:00:21.20ID:cIF0PQeg inline void debug_pulse(int no){
#if(DEBUG == 1)
switch(mode){
case 0: pulse(A0); break;
case 1: pulse(A1); break;
case 2: pulse(C5); break;
case 3: pulse(F0); break;
}
#endif
}
1.この場合 debug_pulse(3);は pulse(F0)と同じになる。
2. #define DEBUG 0 にすると全て跡形もなく消える。
1,2は正しい?
#if(DEBUG == 1)
switch(mode){
case 0: pulse(A0); break;
case 1: pulse(A1); break;
case 2: pulse(C5); break;
case 3: pulse(F0); break;
}
#endif
}
1.この場合 debug_pulse(3);は pulse(F0)と同じになる。
2. #define DEBUG 0 にすると全て跡形もなく消える。
1,2は正しい?
836さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/15(木) 22:04:26.81ID:OQAYkFCC 1.は正しい。
2.この世の全てが無くなるとは思えない。質問が不適切。
2.この世の全てが無くなるとは思えない。質問が不適切。
837デフォルトの名無しさん
2018/11/15(木) 22:09:23.82ID:4a2YDbgY DEBUG == 1のときコンパイル通らないぞ
838さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/15(木) 22:24:43.20ID:OQAYkFCC 駄々しくなかった
839デフォルトの名無しさん
2018/11/15(木) 22:52:52.91ID:TZnKsh0H 関数の外で適切な定義がされてれば通る
840さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/15(木) 23:14:39.58ID:OQAYkFCC こんな感じで私は馬鹿です。
841デフォルトの名無しさん
2018/11/16(金) 05:03:45.34ID:qDPFPFK+ >2.この世の全てが無くなるとは思えない。質問が不適切。
質問の意図は
inline void debug_pulse(int no){ }はコードを生成しない。これは正しいか?
である。
質問の理解が不適切。
質問の意図は
inline void debug_pulse(int no){ }はコードを生成しない。これは正しいか?
である。
質問の理解が不適切。
842デフォルトの名無しさん
2018/11/16(金) 07:42:29.36ID:PBHgKXBb >>841
エラーになるのでコードは生成されません
エラーになるのでコードは生成されません
843デフォルトの名無しさん
2018/11/16(金) 08:49:40.86ID:U1UWmjZG mode の出所は? A)no の typo B)別途関数の外に居るし
844デフォルトの名無しさん
2018/11/16(金) 19:06:25.10ID:4cszXKPK int mode;
void pulse(void);
int A0;
int A1;
int C5;
int F0;
void pulse(void);
int A0;
int A1;
int C5;
int F0;
845デフォルトの名無しさん
2018/11/17(土) 10:49:41.98ID:B4GISbTr modeがどうかは質問の趣旨と関係ないのでどうでもいいが(modeがglobalとか適当に)
inline void debug_pulse(int no){
switch(mode){
case 0: pulse(A0); break;
case 1: pulse(A1); break;
case 2: pulse(C5); break;
case 3: pulse(F0); break;
}
}
か
inline void debug_pulse(int no){
}
か
にしかならないから
1.は「ならない」
2.は「消える」
inline void debug_pulse(int no){
switch(mode){
case 0: pulse(A0); break;
case 1: pulse(A1); break;
case 2: pulse(C5); break;
case 3: pulse(F0); break;
}
}
か
inline void debug_pulse(int no){
}
か
にしかならないから
1.は「ならない」
2.は「消える」
846デフォルトの名無しさん
2018/11/17(土) 10:50:51.46ID:B4GISbTr ああ 2. で消える条件は
debug_pulse() を呼んでる部分が無いことが前提だから
2. 「消える」「消えない」どっちとも言えない
だな
debug_pulse() を呼んでる部分が無いことが前提だから
2. 「消える」「消えない」どっちとも言えない
だな
847デフォルトの名無しさん
2018/11/17(土) 12:25:27.92ID:OvrLhogI >>846
inlineなんで、消えるか消えないかはアドレス必要な操作をしてるかどうか
inlineなんで、消えるか消えないかはアドレス必要な操作をしてるかどうか
848デフォルトの名無しさん
2018/11/17(土) 13:20:26.13ID:yMNF1uQT inlineをどう扱うかなんてコンパイラ次第
どんなコードが吐かれるかが知りたければ
吐かれたコードを見るのが一番
どんなコードが吐かれるかが知りたければ
吐かれたコードを見るのが一番
849デフォルトの名無しさん
2018/11/17(土) 22:18:09.47ID:PyYM1CbT inline void debug_pulse(int no){
#if(DEBUG == 1)
switch(no){
case 0: pulse(0xA0); break;
case 1: pulse(0xA1); break;
case 2: pulse(0xC5); break;
case 3: pulse(0xF0); break;
}
#endif
}
1.この場合 debug_pulse(3);は pulse(0xF0)と同じになる。
2. #define DEBUG 0 にすると全て跡形もなく消える。
1,2は共に正しい?
#if(DEBUG == 1)
switch(no){
case 0: pulse(0xA0); break;
case 1: pulse(0xA1); break;
case 2: pulse(0xC5); break;
case 3: pulse(0xF0); break;
}
#endif
}
1.この場合 debug_pulse(3);は pulse(0xF0)と同じになる。
2. #define DEBUG 0 にすると全て跡形もなく消える。
1,2は共に正しい?
850デフォルトの名無しさん
2018/11/17(土) 22:20:38.34ID:/DEd7oJ8 そもそもpulseがなんなのかわからんから
なにが書いてあるのか意味不明
なにが書いてあるのか意味不明
851デフォルトの名無しさん
2018/11/17(土) 23:02:18.32ID:cQE6WwU+ コンパイラのオプション指定は?
852デフォルトの名無しさん
2018/11/18(日) 03:24:10.19ID:P3SzQi6N 次スレからは、
【初心者歓迎】C/C++室 Ver.103【環境依存OK】 を、
【上級者用】C/C++室 Ver.104【環境依存OK】
にした方がいいな。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】 を、
【上級者用】C/C++室 Ver.104【環境依存OK】
にした方がいいな。
853デフォルトの名無しさん
2018/11/18(日) 11:25:26.97ID:sRdnUsGm 何で相談室の方行かないんだろう
854デフォルトの名無しさん
2018/11/18(日) 13:06:07.95ID:OtDWWVpG856デフォルトの名無しさん
2018/11/18(日) 14:47:27.03ID:SB4p/OrB 本人の主観で良いでしょう
859デフォルトの名無しさん
2018/11/18(日) 19:08:07.14ID:P3SzQi6N くだらないないことを、グダグダ突っかかり続けるのが、5ch民のクセ。
861デフォルトの名無しさん
2018/11/18(日) 19:23:01.28ID:SB4p/OrB 何がしたいんだ?煽りたいのか?
862デフォルトの名無しさん
2018/11/18(日) 21:29:53.81ID:NspDNQEU >>852が初心者向けの回答すればそれで解決だろ。アホ草
863デフォルトの名無しさん
2018/11/18(日) 21:35:53.00ID:2nMU53A+ そもそも論言っていい?w
なんで初心者でも上級者でも質問したらきちんと回答してくれるこのスレがあるのに、自分が気に入らないからって勝手に新スレ作るの?
そういうのを躊躇なくやれちゃう人が本当に怖い・・・
なんで初心者でも上級者でも質問したらきちんと回答してくれるこのスレがあるのに、自分が気に入らないからって勝手に新スレ作るの?
そういうのを躊躇なくやれちゃう人が本当に怖い・・・
864デフォルトの名無しさん
2018/11/18(日) 21:41:35.59ID:SB4p/OrB 議論したいなら、自治スレに移動してやってくれ
865デフォルトの名無しさん
2018/11/18(日) 22:07:32.02ID:sRdnUsGm867デフォルトの名無しさん
2018/11/18(日) 23:53:08.38ID:P3SzQi6N 今までの、他者排除姿勢から、よくも>>866が書けたもんだ。
868デフォルトの名無しさん
2018/11/19(月) 00:02:10.47ID:FLKvqXWs 他者排除だって?誰が?QZが?
被害妄想激しすぎるんじゃないか?
被害妄想激しすぎるんじゃないか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 高市政権「かけてもつながらない。機能していない」防衛当局間のホットライン機能せず [834922174]
- あたしゃやだよ
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑★2 [931948549]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 【朗報】ケンモジサンが買うふりかけ、二択に絞られる [394133584]
