次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
C++相談室 part140
https://mevius.5ch.net/test/read.cgi/tech/1547326582/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part141
■ このスレッドは過去ログ倉庫に格納されています
2019/02/22(金) 03:07:43.52ID:MgOIx7iK
2デフォルトの名無しさん
2019/02/22(金) 05:33:28.83ID:7jsMxmv+ Cの場合は
#define BIT(n) (1<<n)
if(data & BIT(3)){ data &=~BIT(3); }
みたいなやり方をするんだが、C++の場合は#defineは使わない方がいいらしいけどどういう書き方が
一般的なのだろう。
#define BIT(n) (1<<n)
if(data & BIT(3)){ data &=~BIT(3); }
みたいなやり方をするんだが、C++の場合は#defineは使わない方がいいらしいけどどういう書き方が
一般的なのだろう。
3デフォルトの名無しさん
2019/02/22(金) 05:43:25.43ID:kNNcPZDM inlineにしてる。
2019/02/22(金) 05:45:32.03ID:9HNz13T8
そういう場合にマクロ使うなと言われるのは、単にインライン関数にした方がややこしいバグを産みにくいってだけ
別にどっちでもいい
別にどっちでもいい
5デフォルトの名無しさん
2019/02/22(金) 05:51:49.61ID:kNNcPZDM そろそろonline関数も必要だよな。
2019/02/22(金) 06:59:58.96ID:uV/D6RzS
マクロ関数 BIT() の部分、マスク生成をinline関数にするか、
引数を2つ取って、整数値の指定ビットを落とした値を返すinline関数にするか、
if ~ の部分まで含めて、変数の指定ビットを落とすinline関数にするか…。
と思ってちょいと考えたら、この場合は if 不要と気づいた。
最初から 0 か、ビット操作の結果か、いずれにせよ data の bit3 は 0 になるね。
本筋とは関係ない部分だけど。
引数を2つ取って、整数値の指定ビットを落とした値を返すinline関数にするか、
if ~ の部分まで含めて、変数の指定ビットを落とすinline関数にするか…。
と思ってちょいと考えたら、この場合は if 不要と気づいた。
最初から 0 か、ビット操作の結果か、いずれにせよ data の bit3 は 0 になるね。
本筋とは関係ない部分だけど。
7デフォルトの名無しさん
2019/02/22(金) 08:00:05.86ID:7jsMxmv+ >>3
inline関数ですか?
constexperでも関数は作れると思いますが、inlineの方がベターなのでしょうか?
constexper int BIT(int bitno){ return 1<<bitno;}
usingを使ってこんな書き方ができますが、マクロの変換はできないのでしょうか?
using Func = int(*)(int);
あとtemplateはあまり使ったことがないですが、なんかマクロ変換に使えそうな気がします。
inline関数ですか?
constexperでも関数は作れると思いますが、inlineの方がベターなのでしょうか?
constexper int BIT(int bitno){ return 1<<bitno;}
usingを使ってこんな書き方ができますが、マクロの変換はできないのでしょうか?
using Func = int(*)(int);
あとtemplateはあまり使ったことがないですが、なんかマクロ変換に使えそうな気がします。
2019/02/22(金) 08:17:36.02ID:9HNz13T8
constexprは暗黙的にinlineつくからconstexprでもいい
using Funcの部分は根本的に勘違いしてると思う
それの場合intを受け取りintを返す関数のポインタの"型"に
Funcという別名つけてるだけやで
using Funcの部分は根本的に勘違いしてると思う
それの場合intを受け取りintを返す関数のポインタの"型"に
Funcという別名つけてるだけやで
2019/02/22(金) 08:29:39.37ID:9HNz13T8
あと前スレ>>999
PCゲームやスマホゲーでも、STL使おうが使わまいが標準のヒープを直接は使わないことはよくあるよ
コンシューマへの移植性やパフォーマンスのためにカスタムのメモリマネージャ作ってるメーカーなんてザラにある
PCだから/メモリ有り余ってるからお仕着せのライブラリを適当に使うだけでいい、と思ってるなら何も分かってない
PCゲームやスマホゲーでも、STL使おうが使わまいが標準のヒープを直接は使わないことはよくあるよ
コンシューマへの移植性やパフォーマンスのためにカスタムのメモリマネージャ作ってるメーカーなんてザラにある
PCだから/メモリ有り余ってるからお仕着せのライブラリを適当に使うだけでいい、と思ってるなら何も分かってない
2019/02/22(金) 08:34:10.02ID:nGlWTBX9
現実の開発では、とりあえず動くようにしてから余った時間で最適化したほうが速くなるんだけどね
2019/02/22(金) 08:39:17.41ID:nqPCiyAK
まぁオブジェクトコードから臭いを嗅ぎ取った事は
無いな、感じられる人は耳鼻科行った方が良いかと
無いな、感じられる人は耳鼻科行った方が良いかと
2019/02/22(金) 09:28:57.73ID:15zpzt8/
2019/02/22(金) 09:55:02.52ID:n7WbXSSq
14デフォルトの名無しさん
2019/02/22(金) 17:51:49.69ID:PtH+29Wq 「C」からって限定条件なら tcl/tk + canvas はありだと思うが
別に tcl の勉強しなくても使えるし
別に tcl の勉強しなくても使えるし
2019/02/22(金) 19:08:44.27ID:zu/11utG
Cから tcl/tk はどうやって使うの?
16デフォルトの名無しさん
2019/02/22(金) 19:16:25.53ID:kNNcPZDM ワイドスタジオ使っちゃえば?
2019/02/23(土) 10:20:57.99ID:zem2FMDi
void ff()
{
std::packaged_task<int()> pt([](){std::this_thread::sleep_for(std::chrono::seconds(5));return 0;});
auto fut(pt.get_future());
std::thread th(std::move(pt));
th.detach();
//int v(fut.get());
}
上記のように、taskの完了を待機せず、packaged_taskの寿命が尽きても実行時にエラーも出ないのですが
このようなプログラムはありですか
{
std::packaged_task<int()> pt([](){std::this_thread::sleep_for(std::chrono::seconds(5));return 0;});
auto fut(pt.get_future());
std::thread th(std::move(pt));
th.detach();
//int v(fut.get());
}
上記のように、taskの完了を待機せず、packaged_taskの寿命が尽きても実行時にエラーも出ないのですが
このようなプログラムはありですか
18デフォルトの名無しさん
2019/02/23(土) 11:42:14.30ID:+DV3f+Dk そいつにリソース占領させてみればいい
2019/02/23(土) 12:14:03.42ID:zem2FMDi
解決しました
20デフォルトの名無しさん
2019/02/23(土) 18:45:10.43ID:3YtKndGk 紅蓮弐式のほうが強い。
ハイ論破。
ハイ論破。
21デフォルトの名無しさん
2019/02/24(日) 14:23:19.37ID:YwY0sV++ C++ を使っても綺麗にならない
C++ を使ってる意味が無い
C++ を使ってる意味が無い
22デフォルトの名無しさん
2019/02/24(日) 19:25:23.97ID:iK4D+UQi C++に綺麗さを求めるの初めて見た。
2019/02/24(日) 20:13:55.34ID:+qyzr+Wj
最低でもインデントくらい揃えてほしいけどな
2019/02/24(日) 21:31:26.79ID:BOQZpNHf
揃えさせられるPythonの読みにくさを見るとある程度柔軟な方がいい
2019/02/24(日) 23:59:09.46ID:haqs87u6
>>24
お、おう
お、おう
26デフォルトの名無しさん
2019/02/25(月) 00:01:28.93ID:Jz0DexUX つまりJavaか。
2019/02/25(月) 01:25:43.15ID:Jktx5+0Z
なんでやねん
2019/02/25(月) 01:34:14.73ID:1EOktSCH
ランタイム速度最速を謳ってバカに新機能の実験台になってもらう。
それがc++
それがc++
2019/02/25(月) 06:06:13.74ID:pgIYnQ9M
2019/02/25(月) 06:43:23.26ID:AQp51hox
Most elementary use of C++
2019/02/25(月) 07:14:51.09ID:RhTHp1T7
>>29
多分そういう意味じゃない
多分そういう意味じゃない
32デフォルトの名無しさん
2019/02/25(月) 07:40:11.99ID:4l/+z2Zp 古いサイトとか見てるとグローバルな関数に::ってつけるこだわりがよくわからん
::CreateProcessとかさ
::CreateProcessとかさ
>>32
自分の定義した関数にはつけず、win32api には付けて区別しています…
自分の定義した関数にはつけず、win32api には付けて区別しています…
2019/02/25(月) 09:12:10.78ID:RhTHp1T7
公式「バランス調整はVIP部屋を参考にする」
桜井「○○の使用率ガー」
↓
アホ「調整はVIPの使用率できめるらしい」←????
桜井「○○の使用率ガー」
↓
アホ「調整はVIPの使用率できめるらしい」←????
2019/02/25(月) 09:12:42.56ID:RhTHp1T7
誤爆
2019/02/25(月) 10:45:46.00ID:rMTHv0xs
2019/02/25(月) 12:17:07.75ID:y5m/9TYH
>>31
だから綺麗さなんて曖昧な表現だけだと突っ込まれるって話
だから綺麗さなんて曖昧な表現だけだと突っ込まれるって話
38デフォルトの名無しさん
2019/02/25(月) 18:50:34.75ID:Jz0DexUX では評価関数を。
2019/02/25(月) 23:50:43.17ID:sPAFtFpG
double の 999999998 と 999999999 の積が正しい答えである 999999997000000002 じゃなくて 999999997000000000 になります
なんででしょうか
double の範囲に余裕でおさまってますよね?
なんででしょうか
double の範囲に余裕でおさまってますよね?
2019/02/26(火) 00:18:43.14ID:belfWXD5
仮数部の最大値9007199254740992を超えているから
2019/02/26(火) 00:20:50.15ID:H+xdnOpD
>>39
つ 有効桁数
つ 有効桁数
2019/02/26(火) 00:22:22.81ID:kx+LOcr9
43デフォルトの名無しさん
2019/02/26(火) 14:43:31.98ID:8+7ktUtN 桁落ち
2019/02/26(火) 15:56:22.96ID:5MxkS3P7
浮動小数点は元々、誤差があるから、大雑把な数値でよい
正確な数値を求める場合は、整数型か、decimal を使う
正確な数値を求める場合は、整数型か、decimal を使う
2019/02/26(火) 16:22:19.66ID:aKbIPEAT
>>32
同じ関数で、MFC 版と Win32 版があることがあり、混乱が生じて、
切り分けの難しい不具合を生じる可能性を避けるため、そうしている。
C++だと、実引数を省略することもできる場合があり、その場合、Win32版を
使っているつもりが、MFC版が勝手に呼び出されて、動作が自分の思ったものと
少し違ってしまう可能性があるかもしれない。この時、コンパイラは何の
警告も出してくれないかもしれない。それを避けたいため、絶対に
Win32版を呼び出したい場合には、:: を付けることがある。
同じ関数で、MFC 版と Win32 版があることがあり、混乱が生じて、
切り分けの難しい不具合を生じる可能性を避けるため、そうしている。
C++だと、実引数を省略することもできる場合があり、その場合、Win32版を
使っているつもりが、MFC版が勝手に呼び出されて、動作が自分の思ったものと
少し違ってしまう可能性があるかもしれない。この時、コンパイラは何の
警告も出してくれないかもしれない。それを避けたいため、絶対に
Win32版を呼び出したい場合には、:: を付けることがある。
46デフォルトの名無しさん
2019/02/26(火) 19:26:51.90ID:7oeDt7bv DoxygenがモダンC++に対応していないんだけど、何か代わりの物はありますか?
2019/02/26(火) 22:24:56.64ID:t7v3BAso
キーボードのPageUpとPageDownの使い方が判りません、他のボタンも。
48デフォルトの名無しさん
2019/02/26(火) 23:24:35.69ID:S/5yarce C++のthreadってOSの無いマイコン環境でも動作するんだろうか?
threadが使えるってことは、ハードウエア的に最低でもタイマー割り込みを使う必要が
あるんじゃなかろうか? そうするとそういうタイマーなどのハードリソースはすべて自前で
用意するというのが前提のマイコンではどうするんだろとふと疑問に思った。
threadが使えるってことは、ハードウエア的に最低でもタイマー割り込みを使う必要が
あるんじゃなかろうか? そうするとそういうタイマーなどのハードリソースはすべて自前で
用意するというのが前提のマイコンではどうするんだろとふと疑問に思った。
49はちみつ餃子 ◆8X2XSCHEME
2019/02/27(水) 01:13:25.57ID:FtVEDFBt50デフォルトの名無しさん
2019/02/27(水) 01:32:45.56ID:apYcTfdI effective Modern C++ / Scott Meyersには
C++11の偉業として
C++の平行対応作業の大部分がコンパイラ開発側が負担する形で実現されたおかげで、標準
規格としてC++の歴史上はじめてどのプラットフォームでも動作が変わらないマルチスレッドプログラム
の開発が可能となりました。
と書かれている。
「どのプラットフォームでも」と書かれているがOSのないマイコンだってプラットフォームだからそれを含まない
と可笑しいとおもうが、、
C++11の偉業として
C++の平行対応作業の大部分がコンパイラ開発側が負担する形で実現されたおかげで、標準
規格としてC++の歴史上はじめてどのプラットフォームでも動作が変わらないマルチスレッドプログラム
の開発が可能となりました。
と書かれている。
「どのプラットフォームでも」と書かれているがOSのないマイコンだってプラットフォームだからそれを含まない
と可笑しいとおもうが、、
2019/02/27(水) 01:37:31.77ID:3Jl+ieqT
>>50
そこは、対応しているプラットフォームでは、という前提がつくのは自明だと思うぞ、
そこは、対応しているプラットフォームでは、という前提がつくのは自明だと思うぞ、
2019/02/27(水) 01:59:24.57ID:VmfRF6bC
>>46
例えば何に対応してないの?
例えば何に対応してないの?
2019/02/27(水) 09:01:57.37ID:MitD/HmJ
そもそも、マイコンにスレッドなんてあるのか?
main 関数しか無いのでは?
main 関数しか無いのでは?
2019/02/27(水) 09:20:12.60ID:fYEBa3GD
マイコンには関数も変数も無いだろ
機械語セットのどこにも関数とか変数とかの命令は無いじゃん
変数が存在してるように見えるのはコンパイラのおかげ
機械語セットのどこにも関数とか変数とかの命令は無いじゃん
変数が存在してるように見えるのはコンパイラのおかげ
55はちみつ餃子 ◆8X2XSCHEME
2019/02/27(水) 12:06:10.51ID:FtVEDFBt C/C++ というのはそういうランタイムサポートが期待できない環境、いわゆる「ベアメタル」でも使い物になる
システムプログラミング言語であるというのがキモの言語だろ。
フルセットで使える環境なら std::thread という共通インターフェイスを使ってねというだけのことで、
リソースが限られたアーキテクチャでもフルセットが使えるべきというほどのもんではない。
システムプログラミング言語であるというのがキモの言語だろ。
フルセットで使える環境なら std::thread という共通インターフェイスを使ってねというだけのことで、
リソースが限られたアーキテクチャでもフルセットが使えるべきというほどのもんではない。
2019/02/27(水) 12:51:06.39ID:Gf38Q9uK
57デフォルトの名無しさん
2019/02/27(水) 14:09:36.66ID:+TCpifLa >>53
mainが無いのもあった気がする
mainが無いのもあった気がする
58デフォルトの名無しさん
2019/02/27(水) 15:17:57.76ID:6BQDuKk1 >>53
PCよりテヘロジニアス化(専用機をCPUに統合)が進んでるので、GPGPUみたいな感じってネットで読んだことあるな。
PCよりテヘロジニアス化(専用機をCPUに統合)が進んでるので、GPGPUみたいな感じってネットで読んだことあるな。
2019/02/27(水) 15:37:08.27ID:HrTieKXO
>>56
どんなマイコンを想像してるのか知らんけど組込みOSならメモリー数KB程度から動作する
https://www.eforce.co.jp/products/microc3c
>>57
mainなんて単なるC言語とかのお約束だからスタートアップルーチンに手を入れられるなら変えることはいくらでもできるよ
どんなマイコンを想像してるのか知らんけど組込みOSならメモリー数KB程度から動作する
https://www.eforce.co.jp/products/microc3c
>>57
mainなんて単なるC言語とかのお約束だからスタートアップルーチンに手を入れられるなら変えることはいくらでもできるよ
2019/02/27(水) 15:48:15.61ID:jy5tl2qf
サービスなんてエントリーポイント2つあるし
2019/02/27(水) 18:55:35.12ID:BQO9B3mv
template<class T>
int print(T v)
{
printf("%d",v);// intの場合
printf("%lf",v);// doubleの場合
}
printfを使うことは必須なんですが、どうすれば実現できます?
int print(T v)
{
printf("%d",v);// intの場合
printf("%lf",v);// doubleの場合
}
printfを使うことは必須なんですが、どうすれば実現できます?
2019/02/27(水) 19:11:05.97ID:qHrg9QHU
特殊化しよう
■ このスレッドは過去ログ倉庫に格納されています
