エスケープシーケンスや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
322デフォルトの名無しさん
2017/02/02(木) 19:51:53.25ID:Eu4e1EaI323デフォルトの名無しさん
2017/02/02(木) 20:22:53.95ID:k638XiO/ そこまで行ったらDLLに分けるだろう
324313
2017/02/03(金) 13:56:09.01ID:3xPmzf3n 4番をやってみましたが結果OKでした
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからないが、4がOKで作れてる可能性高い)
3. 2のlibからexe作るVSプロジェクト (exeが例外でNG)
4. 2のlibからobjを抽出して、そのobjからexe作るVSプロジェクト (結果OK)
作業の前提条件として下の2つは意味が同じと思っているのですが、違いがあるのでしょうか?
cppをコンパイルしてobjにし、objをリンクしてexeを作る
cppをコンパイルしてobjにし、objをlibに変換してからリンクしてexeを作る
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからないが、4がOKで作れてる可能性高い)
3. 2のlibからexe作るVSプロジェクト (exeが例外でNG)
4. 2のlibからobjを抽出して、そのobjからexe作るVSプロジェクト (結果OK)
作業の前提条件として下の2つは意味が同じと思っているのですが、違いがあるのでしょうか?
cppをコンパイルしてobjにし、objをリンクしてexeを作る
cppをコンパイルしてobjにし、objをlibに変換してからリンクしてexeを作る
325デフォルトの名無しさん
2017/02/03(金) 13:56:30.01ID:OeN1TpCU Ubuntu16.04,gcc5.4.0で,書籍を参考に下記のプログラムを
コンパイル(gcc program.c -lalut -s -o program)したところ,
「'nullptr' was not declared in this scope」というエラーになりました
何が間違っているのか教えてください
---program---
#include<AL/al.h>
#include<AL/alc.h>
int main() {
//OpenAlの初期化
//デバイスを開く
ALCdevice* device = alcOpenDevice(nullptr);
//コンテキストを生成
ALCcontext* context = alcCreateContext(device, nullptr);
//生成したコンテキストを操作対象にする
alcMakeContextCurrent(context);
//OpenALの後始末
//操作対象のコンテキストを解除
alcMakeContextCurrent(nullptr);
//コンテキストを破棄
alcDestroyContext(context);
//デバイスを閉じる
alcCloseDevice(device);
}
コンパイル(gcc program.c -lalut -s -o program)したところ,
「'nullptr' was not declared in this scope」というエラーになりました
何が間違っているのか教えてください
---program---
#include<AL/al.h>
#include<AL/alc.h>
int main() {
//OpenAlの初期化
//デバイスを開く
ALCdevice* device = alcOpenDevice(nullptr);
//コンテキストを生成
ALCcontext* context = alcCreateContext(device, nullptr);
//生成したコンテキストを操作対象にする
alcMakeContextCurrent(context);
//OpenALの後始末
//操作対象のコンテキストを解除
alcMakeContextCurrent(nullptr);
//コンテキストを破棄
alcDestroyContext(context);
//デバイスを閉じる
alcCloseDevice(device);
}
326デフォルトの名無しさん
2017/02/03(金) 14:06:26.05ID:S9UE3yae nullptrはC++11からの機能だからですね
"gcc" -> "g++ --std=c++11"を使ってください
元のコンパイルは-lalutを指定していますが
そのプログラムならOpenALだけで大丈夫なので 下記で通ります
ライブラリをpkg-configに探させてるだけです
g++ --std=c++11 program.c `pkg-config openal --libs` -o program
"gcc" -> "g++ --std=c++11"を使ってください
元のコンパイルは-lalutを指定していますが
そのプログラムならOpenALだけで大丈夫なので 下記で通ります
ライブラリをpkg-configに探させてるだけです
g++ --std=c++11 program.c `pkg-config openal --libs` -o program
327デフォルトの名無しさん
2017/02/03(金) 14:55:43.86ID:xVLuMTde328デフォルトの名無しさん
2017/02/03(金) 15:42:48.87ID:3xPmzf3n >>327
使ってるのも使ってないのもある
libの追加方法は二通り試したけどどちらもビルドエラーはでないけど実行時NG
どちらもlibの追加を省略すると外部シンボルが見つからないエラーでビルドが通らない
プロジェクトのプロパティの「追加の依存ファイル」から→実行時NG
ソースファイル中に「#pragma comment(lib,"")」から→実行時NG
使ってるのも使ってないのもある
libの追加方法は二通り試したけどどちらもビルドエラーはでないけど実行時NG
どちらもlibの追加を省略すると外部シンボルが見つからないエラーでビルドが通らない
プロジェクトのプロパティの「追加の依存ファイル」から→実行時NG
ソースファイル中に「#pragma comment(lib,"")」から→実行時NG
329デフォルトの名無しさん
2017/02/04(土) 00:14:20.36ID:z/XsYQOx 何もしていない普通の一般人の自宅に隠しカメラを取り付け
それをネットでリアルタイム配信
仲間という人間に対する盗聴盗撮生ネット配信の会
しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる
そんなことが今この国では行われています
それをネットでリアルタイム配信
仲間という人間に対する盗聴盗撮生ネット配信の会
しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる
そんなことが今この国では行われています
330デフォルトの名無しさん
2017/02/04(土) 05:54:43.47ID:/r5Uxr2+ libでリンク解決してもダイナミックリンクにしてれば実行時にパス内に見つからずにエラー
スタティックリンクにしないと
スタティックリンクにしないと
331デフォルトの名無しさん
2017/02/04(土) 09:51:58.52ID:GdM1I4zb 久々にプログラミングしようと思うんですけど
USBカメラがあるからそれを使って監視カメラにしたいんだが
ピクセルデータが取れればあとは簡単だと思うんだけど、その前に
この適当に昔買ったバッファローのUSBからデータ取り出す事って可能なんですか?
USBカメラがあるからそれを使って監視カメラにしたいんだが
ピクセルデータが取れればあとは簡単だと思うんだけど、その前に
この適当に昔買ったバッファローのUSBからデータ取り出す事って可能なんですか?
332デフォルトの名無しさん
2017/02/04(土) 10:24:35.81ID:94H9RTyk333デフォルトの名無しさん
2017/02/04(土) 10:55:19.44ID:GdM1I4zb >>332
ありがとうございますだ
ありがとうございますだ
334デフォルトの名無しさん
2017/02/04(土) 21:25:32.55ID:uqEM2LY/ int a = 0;
int *b = &(1+a);
これが出来ないのはなぜですか?
1+aの計算結果というのはメモリ上のどこかにあると思うんですが
int *b = &(1+a);
これが出来ないのはなぜですか?
1+aの計算結果というのはメモリ上のどこかにあると思うんですが
336デフォルトの名無しさん
2017/02/04(土) 21:31:18.24ID:3pCbKNVT &1 を許すとややこしいことになりそうだ
337デフォルトの名無しさん
2017/02/04(土) 21:38:25.89ID:wIflvrKT >>334
計算結果はレジスタに入っててメモリには入ってないんじゃない?
計算結果はレジスタに入っててメモリには入ってないんじゃない?
338デフォルトの名無しさん
2017/02/04(土) 21:52:37.41ID:uqEM2LY/339デフォルトの名無しさん
2017/02/05(日) 19:35:43.24ID:ktep0Dpi340デフォルトの名無しさん
2017/02/05(日) 22:43:20.73ID:F2ePDpTS >337
レジスタがメモリじゃないかのようなアホレスだな
レジスタがメモリじゃないかのようなアホレスだな
341デフォルトの名無しさん
2017/02/05(日) 23:03:58.60ID:wagcFIA6 レジスタのアドレスって・・・
342デフォルトの名無しさん
2017/02/06(月) 01:31:32.48ID:DI3VdQ+9 アドレスのないレジスタはCでアクセスできないからな
アセンブリでしてねになるからね
アセンブリでしてねになるからね
343デフォルトの名無しさん
2017/02/06(月) 03:41:00.32ID:oG8S/cPb って言うかレジスタ関係なくね?
右辺値に対してアドレス取ろうとしてるから駄目なわけで。
右辺値に対してアドレス取ろうとしてるから駄目なわけで。
344デフォルトの名無しさん
2017/02/06(月) 05:58:55.21ID:GvVdGH4O >>334 の質問に対して「右辺値」を出すのは大げさじゃないかな。
もちろん正しいんだけど、詳細に踏み込みすぎというか、
その話はもっと理解が深まってから、というか。
「過去に自分がこの疑問を持ったときに、どんな説明をされたら
すっきり腑に落ちて先に進めただろうか」と思い返しながら回答してるんだろう。
もちろん正しいんだけど、詳細に踏み込みすぎというか、
その話はもっと理解が深まってから、というか。
「過去に自分がこの疑問を持ったときに、どんな説明をされたら
すっきり腑に落ちて先に進めただろうか」と思い返しながら回答してるんだろう。
345デフォルトの名無しさん
2017/02/06(月) 08:21:18.53ID:87jFG7WV346デフォルトの名無しさん
2017/02/06(月) 08:58:46.99ID:L0zP1ki7 間違った説明で相手を納得させておいて開き直りとはこれいかに
347デフォルトの名無しさん
2017/02/06(月) 13:17:28.90ID:WLH8uv6+348デフォルトの名無しさん
2017/02/06(月) 20:21:28.41ID:VJg+IRhi349デフォルトの名無しさん
2017/02/06(月) 20:22:09.67ID:VJg+IRhi350デフォルトの名無しさん
2017/02/06(月) 20:58:58.36ID:oG8S/cPb >>344
でもさ、レジスタって言語と関係ないじゃん?
でもさ、レジスタって言語と関係ないじゃん?
351デフォルトの名無しさん
2017/02/06(月) 21:52:01.05ID:w07g0Jpo registerは予約語なのに無関係は無いわ
352デフォルトの名無しさん
2017/02/06(月) 22:13:36.15ID:rtwfNknd >registerは予約語なのに無関係は無いわ
規格のどこを読んだら「register」キーワードと「レジスター」との関連が読みとれるんだか
規格のどこを読んだら「register」キーワードと「レジスター」との関連が読みとれるんだか
353デフォルトの名無しさん
2017/02/06(月) 23:29:15.59ID:w07g0Jpo 規格厨には理解しろと言っても無理だ
354デフォルトの名無しさん
2017/02/06(月) 23:45:37.66ID:+fmEnPzx >int a = 0;
>int *b = &(1+a);
っていうのが今intになってるからレジスタがどうとか言えるけど
intじゃなくて自分で定義したクラスとかだったらどうなんだって話だな
レジスタだからアドレスが取れないっていう説明はアレすぎないかい?
そもそもレジスタだけで済ませるかどうかはコンパイラの自由ってのもあるし
>int *b = &(1+a);
っていうのが今intになってるからレジスタがどうとか言えるけど
intじゃなくて自分で定義したクラスとかだったらどうなんだって話だな
レジスタだからアドレスが取れないっていう説明はアレすぎないかい?
そもそもレジスタだけで済ませるかどうかはコンパイラの自由ってのもあるし
355デフォルトの名無しさん
2017/02/06(月) 23:48:30.59ID:tIYhS76V 一生懸命だなあw
356デフォルトの名無しさん
2017/02/07(火) 00:11:08.64ID:STnejiJM 俺が思うにさ
最適化でレジスタに配置されてメモリに実体が確保されない変数ってのは
普通にありふれているわけじゃないですか
で、それらの変数のアドレスを取得するように
コードを書き換えたら、コンパイルエラーになるんですか?ってね
その場合ちゃんとコンパイラはメモリに実体を作るような動作になる
だからレジスタ云々はオプティマイズの話であって本質的に全く関係ないだろうと
レジスタに配置されているからアドレス取得できませんって意味不明で
だったらメモリに実体を作ればいくらでもアドレス取得できるだろって話なんだよ
どちらかというとこれは変数の寿命の関係でそうなっているんだよ
最適化でレジスタに配置されてメモリに実体が確保されない変数ってのは
普通にありふれているわけじゃないですか
で、それらの変数のアドレスを取得するように
コードを書き換えたら、コンパイルエラーになるんですか?ってね
その場合ちゃんとコンパイラはメモリに実体を作るような動作になる
だからレジスタ云々はオプティマイズの話であって本質的に全く関係ないだろうと
レジスタに配置されているからアドレス取得できませんって意味不明で
だったらメモリに実体を作ればいくらでもアドレス取得できるだろって話なんだよ
どちらかというとこれは変数の寿命の関係でそうなっているんだよ
357デフォルトの名無しさん
2017/02/07(火) 00:12:13.25ID:vsDAW+dO 初心者向けの簡易な説明に外野がつまらない茶々入れて大騒ぎするなよ。
358デフォルトの名無しさん
2017/02/07(火) 00:25:30.14ID:pfKer2X+ >最適化でレジスタに配置されてメモリに実体が確保されない変数ってのは
>普通にありふれているわけじゃないですか
本当にありふれてるのか?
>普通にありふれているわけじゃないですか
本当にありふれてるのか?
359デフォルトの名無しさん
2017/02/07(火) 00:48:05.62ID:PI0qtNzz winsock(UDP)を使ったプログラムを作っています。
ほぼできたのですが、数100回繰り返すと徐々に通信が
遅くなっていきます。
通信するたびに、オープンとクローズを繰り返しているのですが、
その辺に原因がありそうでしょうか・・・。
ほぼできたのですが、数100回繰り返すと徐々に通信が
遅くなっていきます。
通信するたびに、オープンとクローズを繰り返しているのですが、
その辺に原因がありそうでしょうか・・・。
360デフォルトの名無しさん
2017/02/07(火) 02:25:04.93ID:e2fTv1VF メモリを解放していないから、使用メモリがドンドン大きくなっていくとか?
プロセスの使用メモリを、チェックすれば?
プロセスの使用メモリを、チェックすれば?
361デフォルトの名無しさん
2017/02/07(火) 07:22:03.04ID:ff698yUf362デフォルトの名無しさん
2017/02/07(火) 07:23:26.33ID:ff698yUf >>359
再現性あるならどこが遅くなってるかを調べたら?
再現性あるならどこが遅くなってるかを調べたら?
363デフォルトの名無しさん
2017/02/07(火) 07:43:41.13ID:AbeSLyAt >その自由さのために言語仕様でできないようにしてるだけでしょ
根拠は俺の「こうだったらいいな」
この理屈で行くとアドレスをとれる変数は
レジスタに乗せてはいけないことになるな
根拠は俺の「こうだったらいいな」
この理屈で行くとアドレスをとれる変数は
レジスタに乗せてはいけないことになるな
364デフォルトの名無しさん
2017/02/07(火) 11:15:58.10ID:bjgueVwS register云々してるやつはCかC++か区別して書け
365デフォルトの名無しさん
2017/02/07(火) 11:47:58.10ID:+LdvU0fQ class A
{
public:
int xxx;
void yyy();
};
class B : protected A ←protectedのままにしたい
{
public:
void yyy() { __super::yyy(); }
};
B bbb;
bbb.xxx = 0; ←アクセスできない
bbb.yyy(); ←使える
xxxをclassBの内部を変えることでアクセスできるようにする方法ない?
{
public:
int xxx;
void yyy();
};
class B : protected A ←protectedのままにしたい
{
public:
void yyy() { __super::yyy(); }
};
B bbb;
bbb.xxx = 0; ←アクセスできない
bbb.yyy(); ←使える
xxxをclassBの内部を変えることでアクセスできるようにする方法ない?
366デフォルトの名無しさん
2017/02/07(火) 11:52:35.77ID:Ex9Qk6T0 public:
using A::xxx;
using A::xxx;
367デフォルトの名無しさん
2017/02/07(火) 11:57:42.37ID:+LdvU0fQ >>366
おお!yyy()もそれでいけるね。サンクス
おお!yyy()もそれでいけるね。サンクス
368デフォルトの名無しさん
2017/02/07(火) 19:45:06.55ID:R+lISOuU369デフォルトの名無しさん
2017/02/08(水) 19:54:01.02ID:zyGgo9zG 俺,register使ったことないが
register int a = 0;
int *b = &a;
とすると、b経由で割り当てられたCPUレジスタにアクセスできるのか?
register int a = 0;
int *b = &a;
とすると、b経由で割り当てられたCPUレジスタにアクセスできるのか?
370デフォルトの名無しさん
2017/02/08(水) 20:15:16.32ID:x9WXoVQQ cではregister指定された変数のアドレスは取れない
c++では取ってもいいが、取ると普通はレジスタではなくメモリ割り当てになる
そもそもregister指定しても必ずレジスタ割り当てになるわけではない
今のコンパイラの多くはregisterを無視してるらしい
c++では取ってもいいが、取ると普通はレジスタではなくメモリ割り当てになる
そもそもregister指定しても必ずレジスタ割り当てになるわけではない
今のコンパイラの多くはregisterを無視してるらしい
371デフォルトの名無しさん
2017/02/08(水) 20:21:15.44ID:6Dg3FALd >>369
それ面白いけど実装がめちゃくちゃ大変だし、そもそもメリットないだろ
それ面白いけど実装がめちゃくちゃ大変だし、そもそもメリットないだろ
372デフォルトの名無しさん
2017/02/08(水) 20:38:12.66ID:Z1e//95W C++では次のC++17(今年出る予定)から機能削除、かつ将来のためにキーワードは予約だよ
373デフォルトの名無しさん
2017/02/08(水) 20:41:11.49ID:039KZGQ+ register int a = 0;
int *b = &a;
これで b が a を格納してるCPUレジスタをポイントすると、
b++ とかした時に、どのレジスタを指すの? て話で困るんじゃないか。
int& b = a;
という具合に参照で受ければ何とか…。
int *b = &a;
これで b が a を格納してるCPUレジスタをポイントすると、
b++ とかした時に、どのレジスタを指すの? て話で困るんじゃないか。
int& b = a;
という具合に参照で受ければ何とか…。
374デフォルトの名無しさん
2017/02/08(水) 20:43:52.35ID:Z1e//95W >>373
そんなの普通の変数だって未定義動作じゃん
そんなの普通の変数だって未定義動作じゃん
375デフォルトの名無しさん
2017/02/08(水) 20:47:07.07ID:6Dg3FALd376デフォルトの名無しさん
2017/02/08(水) 21:02:48.15ID:x9WXoVQQ なんでx86前提なんだよ
実際出来ないんだから議論の意味ないが、出来たとしても実装依存だろ
実際出来ないんだから議論の意味ないが、出来たとしても実装依存だろ
377デフォルトの名無しさん
2017/02/08(水) 22:06:39.93ID:r8a3b7fC378デフォルトの名無しさん
2017/02/08(水) 22:23:33.67ID:t4XC3Oio p++ が動作未定儀か否かとは関係ない話だと思うが
ポインタの指し先を求めず、ポインタの演算と差分
int a;
int* p = &a;
int* q = p + 1;
q-p;
で 実体の要素数+1 までは正しく差分が取れることを保障している ってどっかであった記憶
ポインタの指し先を求めず、ポインタの演算と差分
int a;
int* p = &a;
int* q = p + 1;
q-p;
で 実体の要素数+1 までは正しく差分が取れることを保障している ってどっかであった記憶
379デフォルトの名無しさん
2017/02/09(木) 02:31:40.69ID:lnTHGhne380デフォルトの名無しさん
2017/02/09(木) 03:48:37.73ID:WRm++DjL int i;
int *ip=&i;
ip+1はほんとにあるんかい?
いやあるんだろうけどw
int *ip=&i;
ip+1はほんとにあるんかい?
いやあるんだろうけどw
381デフォルトの名無しさん
2017/02/09(木) 06:05:01.98ID:4sYnDBFk 同等なレジスタを32個とか内蔵してて番号で区別する
RISCチップだと不自然でもない気がしてきた。
RISCチップだと不自然でもない気がしてきた。
382デフォルトの名無しさん
2017/02/09(木) 06:22:52.94ID:ZHuRANtU383デフォルトの名無しさん
2017/02/09(木) 06:42:00.30ID:RO+sEjyT >>376
> なんでx86前提なんだよ
お前の言うように実装依存なんだから例に決まってるだろ
68k なら d0, d1, ... ってもっと分かりやすいし他のプロセッサでも適当に決めりゃいいだけ
てか、ネタに突っ込むならもっと面白い奴にしてくれ
> なんでx86前提なんだよ
お前の言うように実装依存なんだから例に決まってるだろ
68k なら d0, d1, ... ってもっと分かりやすいし他のプロセッサでも適当に決めりゃいいだけ
てか、ネタに突っ込むならもっと面白い奴にしてくれ
384デフォルトの名無しさん
2017/02/09(木) 07:01:49.92ID:RO+sEjyT >>381
for(register int* r = &_r0; r < &_r32; r++){
*r = 0;
}
で、全レジスタがクリアできるとか便利かも
で r が _r3 辺りに割り当てられててバグるところまでがセットだよな w
for(register int* r = &_r0; r < &_r32; r++){
*r = 0;
}
で、全レジスタがクリアできるとか便利かも
で r が _r3 辺りに割り当てられててバグるところまでがセットだよな w
385デフォルトの名無しさん
2017/02/09(木) 12:57:20.22ID:DuGTx+Z0 レジスタってそう多くないから別に…
SPARCのレジスタウィンドウ合わせて128個とかならまあ
SPARCのレジスタウィンドウ合わせて128個とかならまあ
386デフォルトの名無しさん
2017/02/09(木) 14:24:27.76ID:ZeoIDdik つ ゼロページレジスタ
387デフォルトの名無しさん
2017/02/09(木) 16:59:44.90ID:m9bylyVb register int a = 0;
int *b = &a;
としたとき、Cではアドレスが取れないって話だったが、C++では取れる
が、次期規格でregisterは無視されるようになる・・・って話だよね
ま、仮にアドレスを取ったとしても何も問題ないように思うが
というのも、CPUの演算は通常レジスタに対してしかできないし
一方でアドレスが取れるのはメモリにあるものだけなので
普通の変数もレジスタとメモリの間を最新の値が行ったり来たりしているのが通常で
コンパイラは矛盾が起きないようなコードを吐き出すように出来ている
だからregister指定要らないよねって話になってるだろう
そもそも、可能な限りレジスタに配置する、というのがあいまいで
レジスタは有限個なのでregister指定しても必ずしもレジスタのみに配置されるかどうか
分からないしCPUにもよる
ここで、アドレスを取ったらレジスタのみに配置することが出来ないのだから
register指定であっても、「可能な限りレジスタに配置する」が出来ないということで
普通の変数扱いということで問題ない
int *b = &a;
としたとき、Cではアドレスが取れないって話だったが、C++では取れる
が、次期規格でregisterは無視されるようになる・・・って話だよね
ま、仮にアドレスを取ったとしても何も問題ないように思うが
というのも、CPUの演算は通常レジスタに対してしかできないし
一方でアドレスが取れるのはメモリにあるものだけなので
普通の変数もレジスタとメモリの間を最新の値が行ったり来たりしているのが通常で
コンパイラは矛盾が起きないようなコードを吐き出すように出来ている
だからregister指定要らないよねって話になってるだろう
そもそも、可能な限りレジスタに配置する、というのがあいまいで
レジスタは有限個なのでregister指定しても必ずしもレジスタのみに配置されるかどうか
分からないしCPUにもよる
ここで、アドレスを取ったらレジスタのみに配置することが出来ないのだから
register指定であっても、「可能な限りレジスタに配置する」が出来ないということで
普通の変数扱いということで問題ない
388デフォルトの名無しさん
2017/02/09(木) 17:03:46.90ID:XjHAaCWU >次期規格でregisterは無視されるようになる・・・って話だよね
文盲は去れ
長文で荒らすな
文盲は去れ
長文で荒らすな
389デフォルトの名無しさん
2017/02/09(木) 17:18:48.08ID:m9bylyVb >372 名前:デフォルトの名無しさん[] 投稿日:2017/02/08(水) 20:38:12.66 ID:Z1e//95W [1/2]
>C++では次のC++17(今年出る予定)から機能削除、かつ将来のためにキーワードは予約だよ
は噓ということ?
>C++では次のC++17(今年出る予定)から機能削除、かつ将来のためにキーワードは予約だよ
は噓ということ?
390デフォルトの名無しさん
2017/02/09(木) 17:24:14.08ID:WRm++DjL registerってのを使わなきゃいんでないのw
391デフォルトの名無しさん
2017/02/09(木) 17:31:18.93ID:aUQtcCRM 規格なんて知らんがレスから想像するとこうじゃないのか?
今の規格は「可能ならレジスタに割り当てろ」で、実際のコンパイラは無視してるのが多い
事実上機能してないから次期規格では仕様変えてregister変数やめる
今の規格は「可能ならレジスタに割り当てろ」で、実際のコンパイラは無視してるのが多い
事実上機能してないから次期規格では仕様変えてregister変数やめる
392デフォルトの名無しさん
2017/02/09(木) 17:50:34.94ID:55oKC5Ju C++ではすでにregisterは無視されてて、17からはエラーになるってことだろ
393デフォルトの名無しさん
2017/02/09(木) 18:47:17.89ID:lnTHGhne C++11の時点でdeprecatedになってて
C++17で書いたらエラーになる
キーワードはいつか規格で何かに再利用するかもしれないから予約したまま(ユーザーが関数名などに使用出来ないまま)。
C++17で書いたらエラーになる
キーワードはいつか規格で何かに再利用するかもしれないから予約したまま(ユーザーが関数名などに使用出来ないまま)。
394デフォルトの名無しさん
2017/02/09(木) 19:03:26.16ID:QPpApk6a395デフォルトの名無しさん
2017/02/09(木) 20:05:28.75ID:IuYXl6Zl >>393
registerについては、再利用の可能性というより、混乱の元だから今後は誰も触れてくれるなってところかな。
registerについては、再利用の可能性というより、混乱の元だから今後は誰も触れてくれるなってところかな。
396デフォルトの名無しさん
2017/02/09(木) 20:34:41.55ID:wAatsUnZ 今、キーワードとして問題ないからそのままにしておくってことだろ
一旦キーワードでなくしてしまうと将来また使いたくなった時に大混乱するから
一旦キーワードでなくしてしまうと将来また使いたくなった時に大混乱するから
397デフォルトの名無しさん
2017/02/09(木) 20:46:05.15ID:WRm++DjL C++17なんてもあるのか。 ついてけんわぁ
398デフォルトの名無しさん
2017/02/10(金) 12:36:17.18ID:yPTk9ivW register使うなら今のうち
399デフォルトの名無しさん
2017/02/10(金) 16:29:47.71ID:gDFEqThI C++17以降のregisterは、ガチャガチャチーン!とbeep音を鳴らします
400デフォルトの名無しさん
2017/02/11(土) 17:45:33.84ID:B6KA1QDA Mingwのgccでこんなのためしたら結構はやくなるのね。C++だと速度変わらんかったけど。
#include <windows.h>
#include <stdio.h>
int main(void) {
register int i;
DWORD t;
t = GetTickCount();
for(i=0 ; i <100000000 ; i++);
printf("%d\n",(int)(GetTickCount()-t));
return 0;
}
#include <windows.h>
#include <stdio.h>
int main(void) {
register int i;
DWORD t;
t = GetTickCount();
for(i=0 ; i <100000000 ; i++);
printf("%d\n",(int)(GetTickCount()-t));
return 0;
}
401デフォルトの名無しさん
2017/02/11(土) 17:50:28.59ID:o1zrWG0U registerネタどんだけ続けるんだ
402デフォルトの名無しさん
2017/02/11(土) 18:02:59.72ID:Ka66uAeU >int main(void) {
> register int i;
変数を先頭で宣言しないと精神の安定が保てない病気
> register int i;
変数を先頭で宣言しないと精神の安定が保てない病気
403デフォルトの名無しさん
2017/02/11(土) 18:27:32.77ID:2x1BPms4 っくっだらないとこでも叩いておかないと精神の安定が保てない病気
404デフォルトの名無しさん
2017/02/11(土) 18:51:03.55ID:jl0P82O4 インデントや{}のスペース・改行でも自分のやり方と違うと喚きそうだなw
405デフォルトの名無しさん
2017/02/11(土) 19:53:33.79ID:7HNC8OW9 >>404
違和感がでるよね。
会社でこれがうちのスタイルって強制され、それになじむと
そうじゃないスタイルのものは気持ち悪いって感じるようになった
>for(i=0 ; i <100000000 ; i++);
最近のコンパイラはまじめにやらないで、コンパイル時にiは使ってないあるね
処理省くニダってして実行コード生成してなさそうな気がするが。
違和感がでるよね。
会社でこれがうちのスタイルって強制され、それになじむと
そうじゃないスタイルのものは気持ち悪いって感じるようになった
>for(i=0 ; i <100000000 ; i++);
最近のコンパイラはまじめにやらないで、コンパイル時にiは使ってないあるね
処理省くニダってして実行コード生成してなさそうな気がするが。
406デフォルトの名無しさん
2017/02/11(土) 19:59:07.05ID:nnf0vKBy K&R2 あたりにあわせておけば問題ないのでは?
というか,K&R2 から大幅に変えさせられるのは苦痛だな
というか,K&R2 から大幅に変えさせられるのは苦痛だな
407デフォルトの名無しさん
2017/02/11(土) 21:18:53.92ID:vquAI+Jk 21世紀にもなってK&Rとか何の冗談
変化が苦痛な老人はすっこんでて
変化が苦痛な老人はすっこんでて
408デフォルトの名無しさん
2017/02/11(土) 21:22:09.84ID:e+WRwiZx409デフォルトの名無しさん
2017/02/11(土) 21:51:35.00ID:o1zrWG0U 21世紀に相応しいスタイルを是非教えてくれ
410デフォルトの名無しさん
2017/02/11(土) 22:42:56.52ID:2x1BPms4 可能な限りC/C++使わない
それが21世紀スタイル
それが21世紀スタイル
411デフォルトの名無しさん
2017/02/11(土) 22:58:24.73ID:nOWXV3w9 >>410
おいおい、でも、それが正しいな。
おいおい、でも、それが正しいな。
412デフォルトの名無しさん
2017/02/12(日) 02:53:21.48ID:guRObziH 正しいけど"可能な限り"の範囲がまだまだ足りない
組み込みの世界はC言語が強過ぎて未だにC++すら使えない環境がざらにあるしな
組み込みの世界はC言語が強過ぎて未だにC++すら使えない環境がざらにあるしな
413デフォルトの名無しさん
2017/02/12(日) 08:33:11.98ID:XNCDxJ48 >>407
C/C++ くらいなら,K&R2 に準拠にさせてよー C#, Java も,とはいわないからさー
C/C++ くらいなら,K&R2 に準拠にさせてよー C#, Java も,とはいわないからさー
414デフォルトの名無しさん
2017/02/12(日) 08:43:31.97ID:MRPxQTsD >>413
C++を入れるなよ
C++を入れるなよ
415デフォルトの名無しさん
2017/02/12(日) 10:10:03.29ID:nF2JpTw9 結局C言語で全て済んでしまうからね。他は趣味。はっきりわかんだね
416デフォルトの名無しさん
2017/02/12(日) 14:01:05.04ID:XNCDxJ48 >>414
いっしょだよ,C++ も普通に K&R2 に似せて書くのが一番いい
いっしょだよ,C++ も普通に K&R2 に似せて書くのが一番いい
417デフォルトの名無しさん
2017/02/12(日) 15:47:27.43ID:CF268nsq >>402 の「ブロック先頭で変数を定義するのは時代遅れ」ていう
指摘を受けての流れじゃないかな。
最初の使用の直前まで変数定義を遅らせることができる、
というC++での改良や、それを取り込んだC99以降で
わざわざK&R2版の書き方に制限されるのは困るという話。
おそらく、K&R2に似たスタイルが良いという主張も
「新しく追加された便利機能は使った上でK&R風のスタイル」
という意図なんだと思う。
指摘を受けての流れじゃないかな。
最初の使用の直前まで変数定義を遅らせることができる、
というC++での改良や、それを取り込んだC99以降で
わざわざK&R2版の書き方に制限されるのは困るという話。
おそらく、K&R2に似たスタイルが良いという主張も
「新しく追加された便利機能は使った上でK&R風のスタイル」
という意図なんだと思う。
418デフォルトの名無しさん
2017/02/12(日) 15:59:10.19ID:rZ/K+l3Q >>400はiの宣言を先に、tよりも先にすることで、何を試したのかってのをわかりやすくしてんだろ
K&Rなんかにこだわるよりもこういうソースの方がいいわ
K&Rなんかにこだわるよりもこういうソースの方がいいわ
419デフォルトの名無しさん
2017/02/12(日) 17:25:00.92ID:XNCDxJ48 >>417
当然だ
当然だ
420デフォルトの名無しさん
2017/02/13(月) 00:11:12.09ID:ebN6PGVD 使う直前に変数を宣言してるとたまにgoto出来ないerrorが出るのが面倒くさい
421デフォルトの名無しさん
2017/02/13(月) 11:51:26.73ID:M86uydzz ブロックの違う同名変数の取り違えでトラブってるのを見てから
宣言位置が不揃いなのもよくないと思うようになった
宣言位置が不揃いなのもよくないと思うようになった
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★3 [樽悶★]
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★3 [お断り★]
- 高市首相「台湾有事」発言引き出した「立憲・岡田克也氏」に聞いた質問の真意「これはマズイ発言だと」少しずらしてみたが焼け石に水 ★2 [ぐれ★]
- 【株価】日経平均、上げ幅一時2000円超 5万円台を回復 [蚤の市★]
- トランプ氏、女性記者に「ブタ、静かに」 エプスタイン元被告めぐる質問さえぎる [1ゲットロボ★]
- 【米中関係】中国、米国産大豆84万トン輸入 他国産より高値で購入… [BFU★]
- 吉村知事「あのさぁ、中国人観光客の頼るのやめようよ?他のエリアの人に来てもらうとかもっと考えようよ?中国依存してないでさァ!」 [856698234]
- 日経新聞さん、中国をおちょくってしまう… 大丈夫か?日本人 [271912485]
- 議員「我々も物価高で苦しいんだ!」 [256556981]
- 日本人「な、なぜだ?なぜこの件で日本を助けてくれる国が0カ国なんだ!?」。日本人、さすがに気づく [805596214]
- アキバ来たら中東顔ばかりでワロタ
- 【画像】一流コンビニ・ローソン、デザインで敗北しまくってしまうwwwwwwwwwwwwwwwwww [242521385]
