エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
探検
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/11/06(日) 22:58:02.60ID:dU5z27As
207デフォルトの名無しさん
2017/01/08(日) 03:43:39.84ID:eh6WgorM208デフォルトの名無しさん
2017/01/08(日) 04:24:28.51ID:c5pY166L >>201-204
普通は、ファイルを閉じる際、自動的にflushされる
それに何もしなくても、OSのデフォルト設定で、
dirty Page Cache を、5秒ごとにflushして、メモリとディスクを同じ状態に保つ
USB・SSDの書き込み回数を減らしたい人は、書き込み間隔を15〜30秒に設定している人もいる。
commit=15
Linux I/O のお話 write 編
http://d.hatena.ne.jp/naoya/20070523/1179938637
普通は、ファイルを閉じる際、自動的にflushされる
それに何もしなくても、OSのデフォルト設定で、
dirty Page Cache を、5秒ごとにflushして、メモリとディスクを同じ状態に保つ
USB・SSDの書き込み回数を減らしたい人は、書き込み間隔を15〜30秒に設定している人もいる。
commit=15
Linux I/O のお話 write 編
http://d.hatena.ne.jp/naoya/20070523/1179938637
209デフォルトの名無しさん
2017/01/08(日) 11:20:03.87ID:OpAcES4h char buffer[256];
scanf(%s,buffer);
printf(
scanf(%s,buffer);
printf(
210デフォルトの名無しさん
2017/01/08(日) 11:28:02.93ID:OpAcES4h すみません、誤送信してしまいました
質問させてください。
char buffer[256];
scanf(%s,buffer);
printf("finish---_n");
という記述で、文字入力をした後、何回リターンキーを押しても
finishが表示されない、つまりscanfが終了しないような状態になっているのですが
何か特別な条件でscanfが終了しないことってあるものなのでしょうか?
ちなみに、コードのscanfの行だけコメントアウトすると普通にfinishが表示される状態です。
あと、新規で.cファイルを作って短いコードにしてコンパイルしても問題なく動いてくれています。
質問させてください。
char buffer[256];
scanf(%s,buffer);
printf("finish---_n");
という記述で、文字入力をした後、何回リターンキーを押しても
finishが表示されない、つまりscanfが終了しないような状態になっているのですが
何か特別な条件でscanfが終了しないことってあるものなのでしょうか?
ちなみに、コードのscanfの行だけコメントアウトすると普通にfinishが表示される状態です。
あと、新規で.cファイルを作って短いコードにしてコンパイルしても問題なく動いてくれています。
211デフォルトの名無しさん
2017/01/08(日) 11:43:58.41ID:nyR751xv212デフォルトの名無しさん
2017/01/08(日) 11:52:30.04ID:OpAcES4h >>211
先日も少し教えてもらったのでまた聞きに来てるのが恥ずかしいのあ
ですが、サーバとクライアントでの通信のプログラムです。
server.c
http://codepad.org/epmTQJ0
client.c
http://codepad.org/uhR4zEL3
gcc -o s server.c
gcc -o c client.c
./s&
./c
で実行しています。
サーバ側のscanfで止まってしまうみたいなのですが
サーバ側のscanfをコメントアウトすると通るみたいです。
先日も少し教えてもらったのでまた聞きに来てるのが恥ずかしいのあ
ですが、サーバとクライアントでの通信のプログラムです。
server.c
http://codepad.org/epmTQJ0
client.c
http://codepad.org/uhR4zEL3
gcc -o s server.c
gcc -o c client.c
./s&
./c
で実行しています。
サーバ側のscanfで止まってしまうみたいなのですが
サーバ側のscanfをコメントアウトすると通るみたいです。
213デフォルトの名無しさん
2017/01/08(日) 12:07:20.20ID:nyR751xv server側がnot foundだわ
リンク確認してみて
リンク確認してみて
214デフォルトの名無しさん
2017/01/08(日) 12:15:37.07ID:9g4d0om9215デフォルトの名無しさん
2017/01/08(日) 12:35:39.21ID:nyR751xv Wait for Connection...Connected.
s1---------
C->S: %s
Server:
実行結果はここで止まって
s2---------
まで進まないって事?
s1---------
C->S: %s
Server:
実行結果はここで止まって
s2---------
まで進まないって事?
216デフォルトの名無しさん
2017/01/08(日) 12:38:46.78ID:Cjw+tP2S217デフォルトの名無しさん
2017/01/08(日) 13:15:24.14ID:nyR751xv 送受信で変数を別々にしてみて
scanf -> sendはbuffer1
recv -> printfはbuffer2
みたいに
38, 39 40行目にブレークポイント置いてやってみて
scanf -> sendはbuffer1
recv -> printfはbuffer2
みたいに
38, 39 40行目にブレークポイント置いてやってみて
218デフォルトの名無しさん
2017/01/08(日) 13:46:50.50ID:uGSXn6++ サーバをフォアグラウンドにしてから入力すればいいだけな気がする。
いったんCtrl-zでクライアントを停止して「bg」でバックグラウンドで再開、
「jobs」でサーバのジョブIDを調べて「fg %[ジョブID]」してから入力すれば、
反応するんじゃないかな。
いったんCtrl-zでクライアントを停止して「bg」でバックグラウンドで再開、
「jobs」でサーバのジョブIDを調べて「fg %[ジョブID]」してから入力すれば、
反応するんじゃないかな。
219デフォルトの名無しさん
2017/01/08(日) 15:47:42.95ID:/TmTqYIS220デフォルトの名無しさん
2017/01/08(日) 16:06:06.04ID:nyR751xv221デフォルトの名無しさん
2017/01/08(日) 16:09:35.63ID:uGSXn6++ 難しいようなら、&で起動するのはやめて、ターミナルを二つ起動して
片方でサーバを、もう片方でクライアントを実行するほうが楽だと思う。
片方でサーバを、もう片方でクライアントを実行するほうが楽だと思う。
222デフォルトの名無しさん
2017/01/08(日) 16:24:16.26ID:7aUjJ3jB 同意
223デフォルトの名無しさん
2017/01/08(日) 17:02:49.06ID:C9GVPqMv >>208
それレイヤーが違う話だよ
それレイヤーが違う話だよ
224デフォルトの名無しさん
2017/01/08(日) 17:48:30.32ID:bwuU6ymI 質問者の提示したURLに書かれている注意事項すら読まない奴を相手にレスするとは
225デフォルトの名無しさん
2017/01/08(日) 19:21:35.50ID:d7tAym4Y226デフォルトの名無しさん
2017/01/08(日) 22:54:37.49ID:c5pY166L 端末も複数、起動できる
仮想デスクトップを知っているか?
デスクトップも、複数起動できる
普通、C/S通信プログラムでは、2つ端末を起動する
>>209-210
2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
仮想デスクトップを知っているか?
デスクトップも、複数起動できる
普通、C/S通信プログラムでは、2つ端末を起動する
>>209-210
2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
227デフォルトの名無しさん
2017/01/11(水) 13:06:08.85ID:X1FDgEas228デフォルトの名無しさん
2017/01/12(木) 04:36:13.74ID:8CizHZGj MSVCはいつまで__cplusplusの定義199711Lのままなんだ
229デフォルトの名無しさん
2017/01/12(木) 07:09:10.44ID:edOk7o4H 変えると暴動が起きるこら変えない
とライブラリ開発者のSTL氏が言っていた
とライブラリ開発者のSTL氏が言っていた
230デフォルトの名無しさん
2017/01/12(木) 12:09:34.61ID:xegpw56Z 1だと思ってた
231デフォルトの名無しさん
2017/01/15(日) 00:31:14.26ID:7/DzGkQz 別ファイルで作成した関数を使用するときは、そのヘッダーファイルの
インクルードだけでなくプロトタイプ宣言も必要ですか?
インクルードだけでもコンパイルは通るし実行も出来るのですが、
そういう警告が出てくるので気になりました
インクルードだけでなくプロトタイプ宣言も必要ですか?
インクルードだけでもコンパイルは通るし実行も出来るのですが、
そういう警告が出てくるので気になりました
232デフォルトの名無しさん
2017/01/15(日) 00:34:44.37ID:H7ag5TAh 警告文をコピペしてくれると話が早いような
233デフォルトの名無しさん
2017/01/15(日) 00:51:14.06ID:e3PYrJk6 そのヘッダーファイルの中でプロトタイプ宣言はされているんじゃないのか
警告の原因は別のことだろ
警告の原因は別のことだろ
234デフォルトの名無しさん
2017/01/15(日) 01:02:35.94ID:7/DzGkQz インクルードするファイルを間違えてたみたいです
お騒がせしました
お騒がせしました
235デフォルトの名無しさん
2017/01/19(木) 22:46:56.05ID:knltoro2 新しくクラスとそれに関連した処理などを実装するとき
ヘッダー側でクラスの定義、ソースファイル側にクラス内のメンバ関数の実装部などを書きますよね
その時メンバ関数はどんな場合でもヘッダー側に書かずにソース側に書くものですか? たとえば
//ヘッダー側です
class A{
private:
int num;
public:
int ReturnNum(void){
return num;
}
};
処理はたった一行ですけどこの場合もint ReturnNum()の実装部はソースファイル側にint A::ReturnNum()のように移すべきですか?
ネット上のプログラムをいくつか見てみたらこのようにメンバ変数をただ返すだけの処理ならヘッダー側に書いてあるものも少なくなかったのでどっちが好ましいんだろうと気になりました
ヘッダー側でクラスの定義、ソースファイル側にクラス内のメンバ関数の実装部などを書きますよね
その時メンバ関数はどんな場合でもヘッダー側に書かずにソース側に書くものですか? たとえば
//ヘッダー側です
class A{
private:
int num;
public:
int ReturnNum(void){
return num;
}
};
処理はたった一行ですけどこの場合もint ReturnNum()の実装部はソースファイル側にint A::ReturnNum()のように移すべきですか?
ネット上のプログラムをいくつか見てみたらこのようにメンバ変数をただ返すだけの処理ならヘッダー側に書いてあるものも少なくなかったのでどっちが好ましいんだろうと気になりました
236デフォルトの名無しさん
2017/01/19(木) 23:08:04.39ID:ipEwSksA プログラムは普通すべて「ソースファイル」に書くものです
「ヘッダー」に書くのはコンパイラー開発者だけです
「ヘッダー」に書くのはコンパイラー開発者だけです
237デフォルトの名無しさん
2017/01/19(木) 23:11:24.96ID:ydMYZ/gE クラスもヘッダに書きますけどぉ
238デフォルトの名無しさん
2017/01/19(木) 23:55:32.15ID:A0Yl7Ujc > その時メンバ関数はどんな場合でもヘッダー側に書かずにソース側に書くものですか?
別にどんな場合でもソース側に書くというわけではない
ヘッダに書くのもソースに書くのも一長一短はあり絶対的にどっちがいいというものではない
君が違いを理解し何を重視するかを意識すれば
君にとってどっちが好ましいかは自然とはっきりする
別にどんな場合でもソース側に書くというわけではない
ヘッダに書くのもソースに書くのも一長一短はあり絶対的にどっちがいいというものではない
君が違いを理解し何を重視するかを意識すれば
君にとってどっちが好ましいかは自然とはっきりする
239デフォルトの名無しさん
2017/01/20(金) 00:23:32.93ID:7sj2OAGi なんか禅問答が始まったかと思ったわ
240デフォルトの名無しさん
2017/01/20(金) 01:12:20.36ID:/ixeQkYS 短いメソッドなら、ヘッダに、inline 指定して書くと、
関数化せずに、inline にしてくれる可能性が高い
まあ、言語では保証していないけど。コンパイラ依存
関数化せずに、inline にしてくれる可能性が高い
まあ、言語では保証していないけど。コンパイラ依存
241デフォルトの名無しさん
2017/01/20(金) 05:11:02.70ID:vaOLIJJw クラス定義で定義されたメンバ関数は暗黙にinlineになるね。
(『プログラミング言語C++第4版』p.464 16.2.8 クラス内関数定義)
class SomeClass {
public:
int a() {return a_;} // 暗黙のinline指定
private:
int a_;
}
…という話を書くために厚い本を調べてたら
class SomeClass {
public:
int a();
private:
int a_;
}
inline int SomeClass::a() // 明示的にinline指定
{
return a_;
}
と書く方法も載ってた。 >>240 は後者の説明だったのね。
(『プログラミング言語C++第4版』p.464 16.2.8 クラス内関数定義)
class SomeClass {
public:
int a() {return a_;} // 暗黙のinline指定
private:
int a_;
}
…という話を書くために厚い本を調べてたら
class SomeClass {
public:
int a();
private:
int a_;
}
inline int SomeClass::a() // 明示的にinline指定
{
return a_;
}
と書く方法も載ってた。 >>240 は後者の説明だったのね。
242デフォルトの名無しさん
2017/01/20(金) 07:10:06.09ID:Nvso2zBq243デフォルトの名無しさん
2017/01/20(金) 08:09:40.71ID:B05iL6IP 『〜のが原則』
『理由がある場合〜こともある』
俺の会社のルールは世界普遍的 思考
『理由がある場合〜こともある』
俺の会社のルールは世界普遍的 思考
244デフォルトの名無しさん
2017/01/20(金) 16:53:52.68ID:abKD9bRi inlineにするのはほとんどその時の気分みたいな?
なんかマクロみたいだな。inlineにすっかみたいな。
なんかマクロみたいだな。inlineにすっかみたいな。
245片山博文MZ ◆T6xkBnTXz7B0
2017/01/20(金) 17:10:04.08ID:XdmbS/hB >>244
関数呼び出しのオーバーヘッドの回避と、定数畳み込みなどの最適化が期待できる場合にインライン化する。
関数呼び出しのオーバーヘッドの回避と、定数畳み込みなどの最適化が期待できる場合にインライン化する。
246デフォルトの名無しさん
2017/01/20(金) 17:38:00.40ID:abKD9bRi >>245
そんな感じ
そんな感じ
247デフォルトの名無しさん
2017/01/20(金) 20:04:23.44ID:1c/0Zcpc >>245
インラインにしても劇的に速くなった経験が無いんですが、コツは有りますか?
インラインにしても劇的に速くなった経験が無いんですが、コツは有りますか?
248デフォルトの名無しさん
2017/01/20(金) 20:57:25.59ID:pNkrp0ep 効果が出るのは
・小さい
かつ
・短時間に非常に多数呼び出される
関数だけだよ。
しかも、まず劇的ではない。
・小さい
かつ
・短時間に非常に多数呼び出される
関数だけだよ。
しかも、まず劇的ではない。
249デフォルトの名無しさん
2017/01/20(金) 21:15:10.32ID:esT1VQmf inlineキーワードはヘッダに実装書くときなどに使用するものでインライン展開を狙った最適化の為に書くものではない
250デフォルトの名無しさん
2017/01/20(金) 21:15:23.08ID:abKD9bRi もしかしてコンパイラの方で展開してるとか はないかなぁw
251デフォルトの名無しさん
2017/01/20(金) 21:57:28.38ID:aetIobRP >>249
インライン関数の話の途中でinlineキーワードの関数の話を始めて、いきなりどうした
インライン関数の話の途中でinlineキーワードの関数の話を始めて、いきなりどうした
252デフォルトの名無しさん
2017/01/20(金) 22:07:56.98ID:CICAdfuU253デフォルトの名無しさん
2017/01/20(金) 23:11:34.78ID:LsENUQp+ ベクトルとか行列のライブラリを使った時は全部インラインにしたな
1/60秒にかなりの回数呼ぶし
ライブラリとかもインラインで書かれてる
1/60秒にかなりの回数呼ぶし
ライブラリとかもインラインで書かれてる
254デフォルトの名無しさん
2017/01/20(金) 23:12:36.14ID:LsENUQp+ ×使った ??作った
255デフォルトの名無しさん
2017/01/20(金) 23:27:28.97ID:esT1VQmf >>252
んなわけない
んなわけない
256デフォルトの名無しさん
2017/01/20(金) 23:34:20.48ID:ITfb1kXg >>255
んなこたーない
んなこたーない
257デフォルトの名無しさん
2017/01/20(金) 23:36:05.42ID:esT1VQmf ヘッダに書いたら暗黙でinlineって
#includeの機能しらんとしか思えないんだが
#includeの機能しらんとしか思えないんだが
258デフォルトの名無しさん
2017/01/21(土) 00:40:48.27ID:dThE4/1u ちょと混じっちゃったね。
関数を定義されたヘッダーが複数のソースに呼ばれちゃったら、実体が
いっぱい出来ちゃうもんね。
関数を定義されたヘッダーが複数のソースに呼ばれちゃったら、実体が
いっぱい出来ちゃうもんね。
259デフォルトの名無しさん
2017/01/21(土) 01:48:12.93ID:RmTA4cQd 江添はなんて言ってる?
260デフォルトの名無しさん
2017/01/21(土) 07:06:45.50ID:5NCJ8rOL forceを信じるのだ
261デフォルトの名無しさん
2017/01/21(土) 08:35:23.75ID:P1/rV56D インライン関数はODR回避のためだと思っていた
C++17(予定)のインライン変数もそんな感じ
C++17(予定)のインライン変数もそんな感じ
262デフォルトの名無しさん
2017/01/21(土) 11:00:41.73ID:wrzS/cSB ODRって何?
263デフォルトの名無しさん
2017/01/21(土) 11:17:05.01ID:J7ipYv9j 単一定義則 One Definition Rule の略語
264263
2017/01/21(土) 19:43:36.29ID:J7ipYv9j 「単一定義規則」の方が検索にかかりやすい言葉かも。
265デフォルトの名無しさん
2017/01/22(日) 08:28:10.05ID:5o7PrILb >>261
そうそう。最適化目的でinline付けても普通無視されるからね。
そうそう。最適化目的でinline付けても普通無視されるからね。
266デフォルトの名無しさん
2017/01/22(日) 14:37:23.33ID:hBhrTyQG267デフォルトの名無しさん
2017/01/24(火) 12:50:54.05ID:ZplzBBh2 Windows上で、APIを使わずに、コマンドプロンプト上だけで結果が
ほしいような、C言語のプログラムを作るのに便利な開発環境はありますか?
VIsualStudioは重すぎてあまり使いたくありません。
どうぞよろしくお願いします。
ほしいような、C言語のプログラムを作るのに便利な開発環境はありますか?
VIsualStudioは重すぎてあまり使いたくありません。
どうぞよろしくお願いします。
268デフォルトの名無しさん
2017/01/24(火) 13:20:58.13ID:qjTW56fl msys2
269デフォルトの名無しさん
2017/01/24(火) 13:39:24.94ID:ZplzBBh2 msysって、どういうものですか?
270デフォルトの名無しさん
2017/01/24(火) 13:58:35.63ID:qjTW56fl >>269
コンパイラツールチェインとターミナルとライブラリ管理のパッケージツールを纏めたものです
エディタは無いし ビルドツールはautotoolsとかcmakeとかを使います
ただ単体ファイルをコンパイルして実行するだけなら
gccを叩くだけなので ご要望に沿うかと
コンパイラツールチェインとターミナルとライブラリ管理のパッケージツールを纏めたものです
エディタは無いし ビルドツールはautotoolsとかcmakeとかを使います
ただ単体ファイルをコンパイルして実行するだけなら
gccを叩くだけなので ご要望に沿うかと
271デフォルトの名無しさん
2017/01/24(火) 14:14:08.29ID:tjYeiy24 重いのがイヤなら code::blocks はどうかね
http://demura.net/lecture/12713.html
http://demura.net/lecture/12713.html
272デフォルトの名無しさん
2017/01/24(火) 20:33:35.20ID:bAAm8CCs >>267
自分もvisual studio が重いのと好きなエディタ使いたいのと、
でもGUIでファイル管理とかコンパイルエラー行へのジャンプをしたかったの自分でそういうツールを作った。TTVC Developer っていうのだけど
ネット上に公開してるけど反応無いので本当に良くできてるかどうかは
わからんが、自分的には便利だとは思ってる
自分もvisual studio が重いのと好きなエディタ使いたいのと、
でもGUIでファイル管理とかコンパイルエラー行へのジャンプをしたかったの自分でそういうツールを作った。TTVC Developer っていうのだけど
ネット上に公開してるけど反応無いので本当に良くできてるかどうかは
わからんが、自分的には便利だとは思ってる
273デフォルトの名無しさん
2017/01/24(火) 20:39:04.14ID:2gaKjsEX 俺はqt creator使ってるな
VSよりマシってくらいだが
VSよりマシってくらいだが
274デフォルトの名無しさん
2017/01/24(火) 20:46:07.50ID:HHZbO6eg275デフォルトの名無しさん
2017/01/24(火) 21:22:57.39ID:nvNd8iP1 Bash on Ubuntu on Windws
276デフォルトの名無しさん
2017/01/24(火) 21:41:00.44ID:1ohBhH6C あれβとれたっけ?
277デフォルトの名無しさん
2017/01/27(金) 01:10:08.67ID:c6wkRwWW *p++ って 参照してからインクリメントですよね。
某書に*(p++)と等価って書いてあったけど。
ん 同じか
某書に*(p++)と等価って書いてあったけど。
ん 同じか
278デフォルトの名無しさん
2017/01/27(金) 01:47:57.39ID:JFq0FevS 同じだよ
その括弧かあってもなくても実際にインクリメントがされるタイミングには影響しない
その括弧かあってもなくても実際にインクリメントがされるタイミングには影響しない
279デフォルトの名無しさん
2017/01/27(金) 02:43:45.51ID:c6wkRwWW すまん 評価してからインクリメントは同じだもんね。
280デフォルトの名無しさん
2017/01/28(土) 22:24:20.92ID:fbuNIeJW281デフォルトの名無しさん
2017/01/29(日) 14:28:58.62ID:XKehhdE4 質問です。
VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました
if(false){
printf("hogehoge");
}
という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。
※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが
到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか?
最適化は /O2オプションです
VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました
if(false){
printf("hogehoge");
}
という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。
※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが
到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか?
最適化は /O2オプションです
282デフォルトの名無しさん
2017/01/29(日) 15:19:11.63ID:DfD+S+Qh >>281
/O4とかは?
/O4とかは?
283デフォルトの名無しさん
2017/01/29(日) 15:31:20.39ID:2ZaFXkbr オプションによる不確定なものをどうして不手際と思ったのか謎
/O2 /GF-なら残る可能性高いし
/O2 /GF-なら残る可能性高いし
284デフォルトの名無しさん
2017/01/29(日) 17:04:30.90ID:XKehhdE4285デフォルトの名無しさん
2017/01/29(日) 18:59:23.49ID:K+/fnyLa 何かの理由があって残してるという事はないのかな・・・
286デフォルトの名無しさん
2017/01/29(日) 19:49:35.57ID:6wGEJq5M >>281
普通に削除されて文字列もなくなるけど?
普通に削除されて文字列もなくなるけど?
287デフォルトの名無しさん
2017/01/29(日) 23:12:58.08ID:XKehhdE4 >>285-286
ご返答ありがとうございます。
どうも文字列をあれこれ変えて、消えたり消えなかったりとよくわからない状況になってきました。
とりあえず、VS2015での最小コードを作れましたので貼り付けます
int main()
{
char text[] = "foofoo";
printf("hogehoge");
if (false) { printf(text); }
return 0;
}
こうすると以下の挙動になります。
このまま: exeにhogehoge, foofooの両方が含まれているのを確認できる
printf("hogehoge");を削除: hogehoge, foofooの両方がEXEから消える
※単に0を返すだけの結果固定関数になるため、変数の割り当てすらしなくなるから?
ご返答ありがとうございます。
どうも文字列をあれこれ変えて、消えたり消えなかったりとよくわからない状況になってきました。
とりあえず、VS2015での最小コードを作れましたので貼り付けます
int main()
{
char text[] = "foofoo";
printf("hogehoge");
if (false) { printf(text); }
return 0;
}
こうすると以下の挙動になります。
このまま: exeにhogehoge, foofooの両方が含まれているのを確認できる
printf("hogehoge");を削除: hogehoge, foofooの両方がEXEから消える
※単に0を返すだけの結果固定関数になるため、変数の割り当てすらしなくなるから?
288デフォルトの名無しさん
2017/01/29(日) 23:42:21.35ID:DuISdTe+ VS2015の環境を持っていないんで見当違いかも知れんが…。
#include <stdio.h> か #include <cstdio> を書いてみる。
char text[] = ... を const char text[] = ... にしてみる。
これらを(独立して)変えてみたら状態が変わらんかな?
printf()による副作用の可能性を考慮してtextを消さないのかも知れん。
もちろんprintf("hogehoge")を呼び出しても
引数になってないtextが読み書きされるはずはないんだけど。
#include <stdio.h> か #include <cstdio> を書いてみる。
char text[] = ... を const char text[] = ... にしてみる。
これらを(独立して)変えてみたら状態が変わらんかな?
printf()による副作用の可能性を考慮してtextを消さないのかも知れん。
もちろんprintf("hogehoge")を呼び出しても
引数になってないtextが読み書きされるはずはないんだけど。
289デフォルトの名無しさん
2017/01/30(月) 00:05:47.51ID:iVXSa+56 >>288
アドバイスありがとうございます
すいません。最小コードといいつつincludeをきちんと書いておりませんでした
#include <stdio.h>を最初に書いております
cstdioに変えてみて、各種パターンやってみましたが、変化は見られませんでした
次に、以下です
const char ではfoofooは消えませんでした
const static char に変えたところ、消えました
printfが、中でスタック消費量でも利用しているのかな…と馬鹿なことを考えて
char text〜をグローバル空間に出してみましたが、foofooは消えずです
アドバイスありがとうございます
すいません。最小コードといいつつincludeをきちんと書いておりませんでした
#include <stdio.h>を最初に書いております
cstdioに変えてみて、各種パターンやってみましたが、変化は見られませんでした
次に、以下です
const char ではfoofooは消えませんでした
const static char に変えたところ、消えました
printfが、中でスタック消費量でも利用しているのかな…と馬鹿なことを考えて
char text〜をグローバル空間に出してみましたが、foofooは消えずです
290デフォルトの名無しさん
2017/01/30(月) 13:26:01.87ID:NFw8h2uH >>289
グローバル変数にするのは最適化されにくくなるだけ。
とりあえずこれで
#include <stdio.h>
int main(){
printf("hogehoge");
if(false){
printf("foofoo");
}
return 0;
}
データセグメントが消えるかどうかは最適化の
目的じゃないと思うが、"foofoo"が残るか見てみると
VS2015
cl /Ox /Fa hoge.cpp きえない
cl /O1 /Fa hoge.cpp きえた
cl /O2 /Fa hoge.cpp きえた
GCC-3.4.5
gcc -S hoge.cpp きえた
まあ所詮VC
グローバル変数にするのは最適化されにくくなるだけ。
とりあえずこれで
#include <stdio.h>
int main(){
printf("hogehoge");
if(false){
printf("foofoo");
}
return 0;
}
データセグメントが消えるかどうかは最適化の
目的じゃないと思うが、"foofoo"が残るか見てみると
VS2015
cl /Ox /Fa hoge.cpp きえない
cl /O1 /Fa hoge.cpp きえた
cl /O2 /Fa hoge.cpp きえた
GCC-3.4.5
gcc -S hoge.cpp きえた
まあ所詮VC
291デフォルトの名無しさん
2017/01/30(月) 17:50:38.46ID:X+M9ocjS つまり>>281は嘘つきってこと?
292デフォルトの名無しさん
2017/01/30(月) 19:47:42.18ID:p0U51Ig/ exeの中身まで気が回りませんわ
293デフォルトの名無しさん
2017/01/30(月) 22:08:56.31ID:mpXbeHjF exeにビルド時のフルパスが埋め込まれてるとイラっとする
294デフォルトの名無しさん
2017/01/30(月) 22:20:13.70ID:XMGcU10o デバッグビルドなら普通でしょ
295デフォルトの名無しさん
2017/01/31(火) 02:46:33.99ID:SZ8YrWi+ リリースビルドにして、最適化オプションを指定すれば?
296デフォルトの名無しさん
2017/01/31(火) 09:17:11.64ID:r8Cb1+5o デバッグ情報を含めなければいいだけだしな
297デフォルトの名無しさん
2017/02/01(水) 01:15:31.17ID:lC8eLy+G あるクラスに引数で渡されるオブジェクトのconstではない参照を持ちたいんですけどどのようにやればいいでしょうか
ポインタはなるべく使いたくないのですが
class A {
public:
void setParam(Param&);
private:
Param& m_param;
}
状況としては
あるクラスBがクラスAみたいなParamの参照を持つクラスを複数持っていて
クラスBがvector<Param>でParamの実体を持っているという感じです
ポインタはなるべく使いたくないのですが
class A {
public:
void setParam(Param&);
private:
Param& m_param;
}
状況としては
あるクラスBがクラスAみたいなParamの参照を持つクラスを複数持っていて
クラスBがvector<Param>でParamの実体を持っているという感じです
298デフォルトの名無しさん
2017/02/01(水) 01:25:10.63ID:V+KME3Sb ライフタイムと循環参照のもたらす悪夢を
全部避けられるように熟考しながら
shared_ptr / weak_ptr をどうぞ
Welcome to C++ nightmare!!
全部避けられるように熟考しながら
shared_ptr / weak_ptr をどうぞ
Welcome to C++ nightmare!!
299デフォルトの名無しさん
2017/02/01(水) 01:36:32.13ID:nwC60mRJ shared_ptrの何が難しいのか判らん。
shared_ptr程度で悪夢とか言ってたらswiftも使えなくない?
shared_ptr程度で悪夢とか言ってたらswiftも使えなくない?
300デフォルトの名無しさん
2017/02/01(水) 02:15:37.65ID:V+KME3Sb まぁ良く調べて使ってねってのを脅し効かせた程度です
他の言語で参照カウント型のsmart_ptr解ってるなら 確かに大丈夫
他の言語で参照カウント型のsmart_ptr解ってるなら 確かに大丈夫
301デフォルトの名無しさん
2017/02/01(水) 12:17:29.74ID:RxSebrTI Windows10でBluetoothを使ったCOM通信を行いたく、
プログラムのほうはCOMポート通信のつもりで書き、
OSの設定でBluetoothに仮想COMポートを追加しました。
Androidとは問題なく接続・通信できたのですが、
Windows10同士ではうまくいきませんでした。
これは仮想COMポート作成するときに、どちらのPCも「受信」(相手側が接続を開始する)にしていたからだと思い、
片方を「送信」に変更しようとしました。
しかし、この場合は接続先PCを指定しなくてはならないのですが
対象PCが選択リスト内に出てこなくて作成することができません。
ペアリングはできているにもかかわらずです。
どうすればWin10PC同士でBluetoothを介したCOMポート接続・通信ができるでしょうか?
プログラムのほうはCOMポート通信のつもりで書き、
OSの設定でBluetoothに仮想COMポートを追加しました。
Androidとは問題なく接続・通信できたのですが、
Windows10同士ではうまくいきませんでした。
これは仮想COMポート作成するときに、どちらのPCも「受信」(相手側が接続を開始する)にしていたからだと思い、
片方を「送信」に変更しようとしました。
しかし、この場合は接続先PCを指定しなくてはならないのですが
対象PCが選択リスト内に出てこなくて作成することができません。
ペアリングはできているにもかかわらずです。
どうすればWin10PC同士でBluetoothを介したCOMポート接続・通信ができるでしょうか?
302デフォルトの名無しさん
2017/02/01(水) 12:30:13.62ID:HL/HxBhd 直接の解はわからないけど、ぐぐって見つかったので確認
ポート開くとき "\\\\.\\COM○○" (○は数字 \はエスケープ込み)
って開いてる?
ポート番号が1桁の場合に限り "COM○"でも開けるらしいけど、
そのコードの延長で 2桁渡すとそれは開けないから
ポート開くとき "\\\\.\\COM○○" (○は数字 \はエスケープ込み)
って開いてる?
ポート番号が1桁の場合に限り "COM○"でも開けるらしいけど、
そのコードの延長で 2桁渡すとそれは開けないから
303301
2017/02/01(水) 12:49:42.61ID:RxSebrTI >>302
あ、はい。それはやってます。
今、わかったのですが、
一旦ペアリングを解除して、改めて「送信」COMポートを追加しようとすると、
先程までペアリングしていた対象PCが選択できるようになりました。
しかし今度は「選択されたデバイスでシリアルポートサービスが実行されていません。」と出て作成されません。
相手側に「受信」のCOMポートは作成済みなのですが…。
あ、はい。それはやってます。
今、わかったのですが、
一旦ペアリングを解除して、改めて「送信」COMポートを追加しようとすると、
先程までペアリングしていた対象PCが選択できるようになりました。
しかし今度は「選択されたデバイスでシリアルポートサービスが実行されていません。」と出て作成されません。
相手側に「受信」のCOMポートは作成済みなのですが…。
304デフォルトの名無しさん
2017/02/01(水) 13:25:07.55ID:HL/HxBhd ttp://kokufu.blogspot.jp/2014/02/windows-bluetooth-spp-server.html
これとかの雰囲気だと
「受信」で作った側のPCのソフトを先に立ち上げて接続待ちにして(SPPサーバー)
「送信」で作った側のPCを後追いで接続 かなぁ
力になれなくてすまん
これとかの雰囲気だと
「受信」で作った側のPCのソフトを先に立ち上げて接続待ちにして(SPPサーバー)
「送信」で作った側のPCを後追いで接続 かなぁ
力になれなくてすまん
305301
2017/02/01(水) 14:06:25.03ID:RxSebrTI >>304
いえいえ!
色々と調べていただいて参考になりました。
どうもシリアル接続サービスをサポートしていないようです。
今回の条件ではあまり好ましくないのですが、
WiFiを使ったソケット通信で妥協することにします。
ありがとうございました。
いえいえ!
色々と調べていただいて参考になりました。
どうもシリアル接続サービスをサポートしていないようです。
今回の条件ではあまり好ましくないのですが、
WiFiを使ったソケット通信で妥協することにします。
ありがとうございました。
306デフォルトの名無しさん
2017/02/01(水) 14:21:22.91ID:+8V+I8xy■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【独占スクープ】元TOKIOの松岡昌宏がSTARTO社を“退所”へ「国分のコンプライアンス違反」問題をきっかけに決断、12月から単独で活動 [Ailuropoda melanoleuca★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【悲報】日本、パンダ0にwwwwwwwwwwww高市さんありがとう🐼 [271912485]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- 中国専門家の興梠一郎先生「実は中国が一番焦ってるのが総領事の暴言だ。中国は今かなり追い詰められている」 [904151406]
- (´・ω・`)おはよ
