前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1645239402/
C++相談室 part160
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2022/04/15(金) 08:39:32.42ID:WMzvufu2963デフォルトの名無しさん
2022/05/20(金) 23:24:07.63ID:mAopBTqL マクロでしか実現できない機能って何がありますか?
派遣先のライブラリがマクロだらけで驚いたので気になりました
派遣先のライブラリがマクロだらけで驚いたので気になりました
964デフォルトの名無しさん
2022/05/20(金) 23:38:17.88ID:Nu0nVGPY メタプログラミングとか?
965デフォルトの名無しさん
2022/05/20(金) 23:48:21.44ID:5lKx3hyB いろいろあると思うけど、ログ関数とか作るときに関数名とか行数とか出力させたかったらマクロ使うかな
966デフォルトの名無しさん
2022/05/20(金) 23:53:08.67ID:sn/66v3t 行数とかなんか無茶なコードの結合とか
967デフォルトの名無しさん
2022/05/21(土) 00:17:23.34ID:SL+9c0t4 コンパイラによってつける属性変えるときとか
public:をオンオフしたり構文に影響を与えるものとか
MSVCの標準ライブラリ覗くと
#define _CONSTEXPR20 constexpr
//#define _CONSTEXPR20 inline //C++17以前
とか書いてあったりする
式を文字列として展開するのもマクロじゃなきゃできない
#define A(exp) #exp
文字列連結(#define A(a1,a2) a1##a2)もマクロじゃなきゃできないけどデバッグが無理ゲーになるから使わん
public:をオンオフしたり構文に影響を与えるものとか
MSVCの標準ライブラリ覗くと
#define _CONSTEXPR20 constexpr
//#define _CONSTEXPR20 inline //C++17以前
とか書いてあったりする
式を文字列として展開するのもマクロじゃなきゃできない
#define A(exp) #exp
文字列連結(#define A(a1,a2) a1##a2)もマクロじゃなきゃできないけどデバッグが無理ゲーになるから使わん
968デフォルトの名無しさん
2022/05/21(土) 00:19:10.39ID:DcWHGr0j __FILE__や__LINE__を使うのを隠蔽したいときはマクロにするしか、
あと文字列を結合してシンボルを合成するとか、
#define cat(a, b) a##b
#define cat2(a, b) a/**/b
あと文字列を結合してシンボルを合成するとか、
#define cat(a, b) a##b
#define cat2(a, b) a/**/b
969デフォルトの名無しさん
2022/05/21(土) 00:53:48.99ID:SKvcmC+r マクロでぐにゃぐにゃしてる中はデバッガで止めづらくなるね
文字列生成(そして文字列の連結) 識別子の連結 はプリプロセッサじゃないとできないし
文字列生成(そして文字列の連結) 識別子の連結 はプリプロセッサじゃないとできないし
970デフォルトの名無しさん
2022/05/21(土) 01:31:55.43ID:wrIep829 初見殺しにマクロは必須
971ハノン ◆QZaw55cn4c
2022/05/21(土) 06:57:00.43ID:0jWT+RR4 というか、inline 指定を絶対化すればいいだけ
どうして inline 指定してもインラインされない場合がある、とか勝手なことをするのか不明
どうして inline 指定してもインラインされない場合がある、とか勝手なことをするのか不明
972デフォルトの名無しさん
2022/05/21(土) 07:00:24.57ID:LKZ4AMgL #define AAAA xxxx
#include "****"
#undef AAAA
#define AAAA yyyy
#include "****"
#undef AAAA
#include "****"
#undef AAAA
#define AAAA yyyy
#include "****"
#undef AAAA
973デフォルトの名無しさん
2022/05/21(土) 07:11:17.89ID:DcWHGr0j974デフォルトの名無しさん
2022/05/21(土) 08:09:54.00ID:0jWT+RR4 >>973
閾値を決めて閾値を超えてとまらないことがわかったら「エラーを出してコンパイルを止める」べきで、勝手に inline を無視してコンパイルしなおすなんて言語道断、コンパイラ作者の独善だね
閾値を決めて閾値を超えてとまらないことがわかったら「エラーを出してコンパイルを止める」べきで、勝手に inline を無視してコンパイルしなおすなんて言語道断、コンパイラ作者の独善だね
975デフォルトの名無しさん
2022/05/21(土) 08:21:34.76ID:/PQRaHnB 今やregisterなみの存在感
976デフォルトの名無しさん
2022/05/21(土) 10:25:33.17ID:qJClzxWq #includeと#defineで疑似メタプログラミング的なことをすることはある
テンプレート化出来ない場合もあるからな
テンプレート化出来ない場合もあるからな
977デフォルトの名無しさん
2022/05/21(土) 10:48:13.19ID:Kirg9sMV constexprが中途半端で結局constevalが追加されたのに倣えば、inlineの強制バージョンも標準化していいはずだよな
既に独自実装のalways_inlineや__forceinlineはあるんだし
既に独自実装のalways_inlineや__forceinlineはあるんだし
978はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 11:13:07.39ID:JD6rd3hb C++ は見かけ上の動作が仕様通りならどういう機械語を生成するか規定しないのが原則だから……。
言語仕様的には constexpr やら consteval も定数式として使える範囲を拡大しただけで、生成される機械語に対しては要求をしてない。
(想定はしていると思うけど。)
言語仕様的には constexpr やら consteval も定数式として使える範囲を拡大しただけで、生成される機械語に対しては要求をしてない。
(想定はしていると思うけど。)
979デフォルトの名無しさん
2022/05/21(土) 11:49:29.76ID:DcWHGr0j 翻訳系の仕事はソースコードの意味を変えずにオブジェクトコードに翻訳することで(ry
狭義のアルゴリズム(シングルスレッド条件、有限ステップで結果出力)の入力と出力の関係が翻訳前後で同じ結果になるならおk
最適化はボランティア活動みたいなもん
だいたいコルモゴロフ複雑性的な意味で一意な解など一般に無いし
狭義のアルゴリズム(シングルスレッド条件、有限ステップで結果出力)の入力と出力の関係が翻訳前後で同じ結果になるならおk
最適化はボランティア活動みたいなもん
だいたいコルモゴロフ複雑性的な意味で一意な解など一般に無いし
980デフォルトの名無しさん
2022/05/21(土) 12:00:28.50ID:DcWHGr0j ていうかDFTと逆DFTおよび4n乗根のDFTと逆DFTができましたよ
https://ideone.com/uK9v58
n語のフーリエ変換にメモリを2n語使って良いなら話は簡単やが
>>695 のソースコードはn語で済ませているから黒魔術を駆使しているに違いない
>>695 の作者は漏れよか頭良すぎ(いやいい意味で、
https://ideone.com/uK9v58
n語のフーリエ変換にメモリを2n語使って良いなら話は簡単やが
>>695 のソースコードはn語で済ませているから黒魔術を駆使しているに違いない
>>695 の作者は漏れよか頭良すぎ(いやいい意味で、
981ハノン ◆QZaw55cn4c
2022/05/21(土) 14:44:04.21ID:0jWT+RR4982デフォルトの名無しさん
2022/05/21(土) 14:47:32.33ID:is6KmnjI あくまでもヒントじゃないのか
983デフォルトの名無しさん
2022/05/21(土) 15:01:05.79ID:0jWT+RR4 >>982
そんな曖昧な態度だから、マクロによるインラインが跋扈してしまうんです、inline に限っては強制力を伴うべきでしょう、#define マクロを葬り去りたいのなら
そんな曖昧な態度だから、マクロによるインラインが跋扈してしまうんです、inline に限っては強制力を伴うべきでしょう、#define マクロを葬り去りたいのなら
984デフォルトの名無しさん
2022/05/21(土) 15:01:21.03ID:OwY6A3+8 そう
あくまでヒント
ヒントになった理由は
世の中のプログラマーがアホだから
あくまでヒント
ヒントになった理由は
世の中のプログラマーがアホだから
985デフォルトの名無しさん
2022/05/21(土) 15:01:54.43ID:OwY6A3+8 #defineは永遠に不滅です
986デフォルトの名無しさん
2022/05/21(土) 15:23:50.89ID:ocVGFLUP CRTPにするとインターフェース継承してもインライン展開されるのほんとまじ意味わからん
987デフォルトの名無しさん
2022/05/21(土) 15:35:03.49ID:0jWT+RR4 >>984
マクロ跋扈とを許す設計者の方がもっとアホですね
マクロ跋扈とを許す設計者の方がもっとアホですね
988デフォルトの名無しさん
2022/05/21(土) 15:39:45.82ID:LSoM7sSc 誰の方がアホとかどうでもよくて
アホだからそういう仕様になった
アホだからそういう仕様になった
989デフォルトの名無しさん
2022/05/21(土) 16:03:58.87ID:DcWHGr0j ちと別件に取り掛かったのでソースコードを見ながらではなく想像やが
>>695 のソースコードでやっている頻繁なswapの意図がわかった希ガス
X(k) = Σ[j=0..n-1]{ x(j) * w^(j*k) }
を計算するとき項の足し合わせ順序はどうでも良く、かつk>1なら
j * k = 0 (mod n) --- (1)
となるx(j) * w^(j*k)が複数回現れるから、(1)を満たす項の出現回数が大きいものを最初に足し合わせたらたちまち
(出現回数)-1語 のメモリが空く、というのが基本的着想で、
これを異なるkについて繰り返し行う場合(1)を満たす最大の出現回数となるjの系列jはk毎に相違するから、
kについての繰り返しについても部分計算を片付けてメモリを空けつつ進められ、
結局jとkの2重ループについてメモリを空けつつつつがなく進められるというしくみ(多分
>>695 のソースコードでやっている頻繁なswapの意図がわかった希ガス
X(k) = Σ[j=0..n-1]{ x(j) * w^(j*k) }
を計算するとき項の足し合わせ順序はどうでも良く、かつk>1なら
j * k = 0 (mod n) --- (1)
となるx(j) * w^(j*k)が複数回現れるから、(1)を満たす項の出現回数が大きいものを最初に足し合わせたらたちまち
(出現回数)-1語 のメモリが空く、というのが基本的着想で、
これを異なるkについて繰り返し行う場合(1)を満たす最大の出現回数となるjの系列jはk毎に相違するから、
kについての繰り返しについても部分計算を片付けてメモリを空けつつ進められ、
結局jとkの2重ループについてメモリを空けつつつつがなく進められるというしくみ(多分
990はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 16:11:12.45ID:JD6rd3hb >>981
inline は ODR の例外。 また、異なる翻訳単位の同じ定義が統合されることを保証する。
これは C++98 のときからそう。
インライン化が望ましいことの指示であるとは書いてあるけど、
今では変数にも inline を付けることが出来るようになったのはもはや inline は ODR の例外としての意味がメインだと考えるべき。
inline は ODR の例外。 また、異なる翻訳単位の同じ定義が統合されることを保証する。
これは C++98 のときからそう。
インライン化が望ましいことの指示であるとは書いてあるけど、
今では変数にも inline を付けることが出来るようになったのはもはや inline は ODR の例外としての意味がメインだと考えるべき。
991デフォルトの名無しさん
2022/05/21(土) 16:29:48.48ID:9lV47uLv >>981
展開を強制したいならforceinlineあるやんけ(メジャーなコンパイラの拡張だけど
展開を強制したいならforceinlineあるやんけ(メジャーなコンパイラの拡張だけど
992デフォルトの名無しさん
2022/05/21(土) 16:47:52.13ID:x3bK44aY onlineも導入すべき
993デフォルトの名無しさん
2022/05/21(土) 17:00:45.58ID:+x02zxlN994ハノン ◆QZaw55cn4c
2022/05/21(土) 17:25:58.12ID:0jWT+RR4995はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 17:56:26.14ID:JD6rd3hb >>994
inline というキーワードの選択が不自然なのはわかるが inline はインライン化の指示というよりは
インライン化に都合のよいように制限する指示と考えるとそんなに不自然でもない。
① C/C++ は翻訳単位ごとに個々にコンパイルしてからリンクする手順を取る
② 他のコンパイル単位にある定義の内容はわからんのでインライン化するためには翻訳単位の中に定義がある必要がある
③ ヘッダに関数定義を書きたい
④ ヘッダに定義を書くと ODR 違反やろ
⑤ じゃあ ODR の例外を設けよう。 inline って付けたら ODR の例外な!
inline というキーワードの選択が不自然なのはわかるが inline はインライン化の指示というよりは
インライン化に都合のよいように制限する指示と考えるとそんなに不自然でもない。
① C/C++ は翻訳単位ごとに個々にコンパイルしてからリンクする手順を取る
② 他のコンパイル単位にある定義の内容はわからんのでインライン化するためには翻訳単位の中に定義がある必要がある
③ ヘッダに関数定義を書きたい
④ ヘッダに定義を書くと ODR 違反やろ
⑤ じゃあ ODR の例外を設けよう。 inline って付けたら ODR の例外な!
996デフォルトの名無しさん
2022/05/21(土) 18:53:36.34ID:0jWT+RR4997はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 19:24:52.72ID:JD6rd3hb >>996
外部に見せる用の実体のある定義は実際に用意される実装が多いと思う。
でも、その外部では実体を参照することは出来てもインライン化できないよね、各翻訳単位で定義が存在する必要があるよねということを言ってる。
その上で現在では LTO が普及したのでどうでもよくなったけど。
外部に見せる用の実体のある定義は実際に用意される実装が多いと思う。
でも、その外部では実体を参照することは出来てもインライン化できないよね、各翻訳単位で定義が存在する必要があるよねということを言ってる。
その上で現在では LTO が普及したのでどうでもよくなったけど。
998デフォルトの名無しさん
2022/05/21(土) 20:03:09.89ID:0jWT+RR4 >>997
なるほど、やっと理解しました
LTO: Link Time Optimization ですか‥‥、トラブルの元で胡散臭いと思っている私は古い人なんでしょうね‥‥、.obj がコンパイラ固有になるのも嫌ですし
なるほど、やっと理解しました
LTO: Link Time Optimization ですか‥‥、トラブルの元で胡散臭いと思っている私は古い人なんでしょうね‥‥、.obj がコンパイラ固有になるのも嫌ですし
999デフォルトの名無しさん
2022/05/21(土) 20:12:03.42ID:kYXfaM+5 海外の専門用語はわかりにくいのう
日本風にリンオプとか略してくれればいいのに
イニシャリズムみたいな言い方だとなんて言うんだろ
日本風にリンオプとか略してくれればいいのに
イニシャリズムみたいな言い方だとなんて言うんだろ
1000デフォルトの名無しさん
2022/05/21(土) 20:15:04.92ID:0jWT+RR4 >>999
村上龍の「5分後の世界」では、略語は使うな、ちゃんと元の言葉を使え、と教育されていますね
ジョージ・オーウェルの「1984」では、略語は謀略的な意味で使われる(小説末尾の appendix: New Speak 解説のカテゴリーB)ようですね
これらに影響されて、略語を連発するのは望ましくないという言語観を私は持っていますが
村上龍の「5分後の世界」では、略語は使うな、ちゃんと元の言葉を使え、と教育されていますね
ジョージ・オーウェルの「1984」では、略語は謀略的な意味で使われる(小説末尾の appendix: New Speak 解説のカテゴリーB)ようですね
これらに影響されて、略語を連発するのは望ましくないという言語観を私は持っていますが
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 36日 11時間 35分 33秒
新しいスレッドを立ててください。
life time: 36日 11時間 35分 33秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国航空会社、日本行き減便900便超に拡大 関空中心に全体の16% [蚤の市★]
- 住宅ローン金利、大手4行で「最高水準」に…10年固定の基準金利4.40-5.15% [蚤の市★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★7 [ぐれ★]
- 「おこめ券知られてない」農水省が説明会実施へ 「税金でおこめ券配ると発行2団体に利益集中するのでは?」記者の問いに鈴木農水大臣 ★2 [ぐれ★]
- 中国外務省「正式な発言撤回なければ受け入れず」 高市首相は台湾有事「存立危機事態」言及せずも「言及しないことと撤回は別問題」★6 [ぐれ★]
- 財政膨張、自民党内に異論 麻生副総裁「やりすぎじゃないか」 [蚤の市★]
- 高市応援団、急に消える。一体何故🤔 [256556981]
- 悪魔系人気Vtuberでびでび・でびる様、社畜の尻尾を踏んで炎上→3482万 [903292576]
- 中学生100m日本記録(10秒70)を樹立した沖縄の少年、突然ゴールキーパーになるとか言い出して陸上を引退してしまう・・・ [329329848]
- 今泣いて何年か後の自分🌃💃🏻🏡
- 日本政府、ブチギレ「ガソリン暫定税率廃止したぶん、どこ増税すればいいんだよ!!!!」 [329329848]
- 【悲報】VTuber、朝7時に通勤は大事なものを失ってるとポストして炎上
