C++相談室 part161

■ このスレッドは過去ログ倉庫に格納されています
2022/05/21(土) 21:23:29.59ID:kYXfaM+5
前スレ
C++相談室 part160
https://mevius.5ch.net/test/read.cgi/tech/1649979572/
702デフォルトの名無しさん
垢版 |
2022/09/01(木) 13:39:01.39ID:wgtUDrt5
携帯電話をケータイと略してしまって何のことか判らなくなるのが日本人の本質
2022/09/01(木) 13:49:12.02ID:epb6+NRn
>>701
単なるライブラリじゃん
2022/09/01(木) 14:00:22.77ID:epb6+NRn
>>702
英語だと「mobile」だしそこは日本人に限らない
2022/09/01(木) 14:04:08.43ID:oIm36FRE
静的じゃなくて、かつ統合的な機能を提供しとるライブラリという感じ
2022/09/01(木) 14:06:48.53ID:P/wcDX1Q
いうて英語圏でも普通にRuntimeと表記されまくってるよ
CRTLよりCRTのが一般的だし。RTよりはRTLかもしれんが

>>703
したらわざわざ区別するような名称が付いたりしません
2022/09/01(木) 14:15:18.72ID:LhGLll4T
>>702
いや、プログラムから呼び出されるライブラリだけでなく実行時サポートのための機構全般を含めてランタイムという場合もある。
たとえば WebAssembly の仮想機械の実装である wasmtime も "A fast and secure runtime for WebAssembly" と説明されている。
https://wasmtime.dev/

明確な用例を見つけられないんだけど .NET とかでも同じようなニュアンスだったはず……。
2022/09/01(木) 14:40:23.38ID:veDjuKDC
おまえらは用語の定義とかの話になると生き生きしはじめるな
2022/09/01(木) 14:46:45.68ID:PGNFrqcy
それがプログラマに大事な資質の一つだからまあ
2022/09/01(木) 15:06:04.82ID:X5eV6Z9e
WebAPI はどうでもいいとして
Win32API 以前は API ってあんまり聴かんかった気がする
もし時代が時代なら C Runtime は Console API とか
System Call API とか名付けられていたんじゃまいか
2022/09/01(木) 15:13:38.12ID:epb6+NRn
Linux界隈でもランタイムって用語は
あんまり馴染みない気がする
2022/09/01(木) 15:45:49.43ID:LhGLll4T
ランタイム (実行時) という語をあてはめる以上は静的ではないというニュアンスが感じられるし、
ダイナミックリンクされるもの全般をふんわりとそう呼び始めたとかではないかなぁ。
あくまでも想像の域を出ないけど。

>710
それはどうだろう。
C ランタイムはコンソールの操作だけを司るわけではないし、ほとんどの関数はシステムコールしない。
あくまでも C という言語の事情に強く結びついているのでランタイムとは呼ばれなかったとしても
C ナントカという名前にはなったんじゃないかな。
713デフォルトの名無しさん
垢版 |
2022/09/01(木) 16:33:34.64ID:X5eV6Z9e
stdc
2022/09/01(木) 17:32:56.24ID:pvebLOMF
libc
2022/09/01(木) 17:56:44.20ID:6yN4NXnZ
libgcc
716デフォルトの名無しさん
垢版 |
2022/09/01(木) 20:14:05.79ID:IftgsB+t
DOSの頃はINT21hのシステムコールだしな。
描画はVRAM直だし。
APIと言うより割り込みだな。
2022/09/01(木) 21:31:42.28ID:2+rvldGI
APIという言葉からは、実装を絶対に見せたくないという強い意志のようなものを感じる
718デフォルトの名無しさん
垢版 |
2022/09/01(木) 23:17:08.92ID:X5eV6Z9e
oppapi
2022/09/01(木) 23:26:48.72ID:JiwZvitn
A(あんまり) P(ぱっとしな) I(い)
2022/09/02(金) 00:07:28.67ID:4QwPhwTb
>>716
DOS の用語ではファンクションコールじゃなかったっけ……
と思って資料を読み返したらなんだかあまり統一されてない感じだった。
ファンクションリクエストという用語を使っている場合もある。

当時の用語の混乱は置いといて、現代的にには
機械語レベルでの値の受け渡しやメモリの配置は ABI で決めるべきことで
API はその上に構築される高レイヤな概念と解される場合が多いと思う。
ソフトウェア割込みを使うという規約は ABI に属して、
どのような値を渡してどんな効果があるかは API に属すと考えるべきじゃないかな。
2022/09/02(金) 07:20:17.05ID:gHt2MaJh
メインフレームではSVC
DIAGNOSEを使う馬合もあるけど
722デフォルトの名無しさん
垢版 |
2022/09/02(金) 09:12:32.54ID:K5Jq4B80
こんなのがあったんだけど

https://qiita.com/purigen/items/d68b146f341c41d260fc
c = c = testString.find_first_of(" ")

これってなんで2回も代入してりゅの???わからにゃいよ
2022/09/02(金) 09:43:01.10ID:tSjdGUVq
誤植でしょ
724デフォルトの名無しさん
垢版 |
2022/09/02(金) 10:15:17.31ID:K5Jq4B80
そっか誤植か〜
わかったニャン☆
2022/09/02(金) 10:29:24.82ID:J900FDad
Win32の頃はint2ehのだしな
描画はシステムメモリに書いてbitbltだし
APIと言うより割り込み棚
2022/09/02(金) 12:14:46.88ID:2iQGHF2d
g++で以下の警告のようなメッセージ(`note')が出るのですが
これは何を意味しているのでしょうか?
コンパイラはaarch64-linux-gnu-g++-10で
オプション-std=c++14に変えるとメッセージは出ません
またx86_64-linux-gnu-g++-10でコンパイルすると
-std=c++17でも-std=c++14でもメッセージは出ません
恐らくC++の規格の問題だと思いますのでこちらに書かせて頂きます
$ cat test.cpp
#include <cmath>
#include <utility>
using namespace std;
pair <double, double>
hoge (double p_x, double p_y)
{
return make_pair (p_x, p_y);
}
int main () {return 0;}
$ g++ -std=c++17 test.cpp
test.cpp: In function ‘std::pair<double, double> hoge(double, double)’:
test.cpp:6:29: note: parameter passing for argument of type ‘std::pair<double, double>’ when C++17 is enabled changed to match C++14 in GCC 10.1
6 | hoge (double p_x, double p_y)
| ^
2022/09/02(金) 13:54:12.27ID:gHt2MaJh
俺んとこでは -std=c++98 でも何も言ってこない
バージョンは g++ (Rev5, Built by MSYS2 project) 10.3.0

Microsoft(R) C/C++ Optimizing Compiler Version 19.33.31629 for x64 で /W4 にしても何も言ってこない
2022/09/02(金) 14:42:37.96ID:E472VNc+
これかな
https://gcc.gnu.org/gcc-10/changes.html#empty_base
2022/09/02(金) 14:46:58.07ID:4QwPhwTb
>>726
言語仕様上は問題ないけど、どうやら特定の環境で起こる GCC のバグを修正した
ために ABI の辻褄が合わないかもしれないというような事情っぽい。
2022/09/02(金) 15:04:43.31ID:2iQGHF2d
>>727-729
有難うございます
難しすぎて書いてあることが良く分からんのですが
ABIなのでビルドし直せば問題ないと理解しました
みなさん凄い調査能力だな
2022/09/02(金) 15:06:04.63ID:4QwPhwTb
>>730
いや、エラーメッセージでググったら stackoverflow で背景の説明をしてるのが見つかったぞ。
732デフォルトの名無しさん
垢版 |
2022/09/02(金) 18:13:40.07ID:/OwM2R8K
ω株 PI.3.14
2022/09/13(火) 14:35:12.50ID:pQsEVmxh
OSの板で聞くべきかもしらんが、終了シグナル受け取ったらメモリの中身を書き出して中断し、再びコマンドが叩かれたらメモリの中身を読み込んで途中から再開するみたいな仕組みを一番簡単にやる方法ってどんなですかね?
チェックポイント・リスタートっていうんでしょうか
2022/09/13(火) 15:19:18.69ID:w3MhG8uL
>>733
Linux とか BSD で昔はメモリをダンプするシステムコールがあったはずだが廃止されたんじゃなかったっけ。
Emacs でそのシステムコールを使ってたから色々とゴタゴタしたような記憶がある。
(そのシステムコールの名前が思い出せない……。 すまぬ。)

再開に必要な情報を適当にシリアライズして書き出すしかしょうがないんじゃないの。
2022/09/13(火) 23:44:43.38ID:Vl/J6nKl
やったことないけどgdbでできそうな気はする
2022/09/14(水) 01:15:05.96ID:o/NVybOh
ptraceは無敵
737デフォルトの名無しさん
垢版 |
2022/09/22(木) 16:50:54.43ID:MKlA3Ol3
おはこんばんわ
何度もお世話になっておりますが、今回も皆様のお知恵をお借りしたく書き込みをしております。
初歩的な質問かもしれませんが質問させてください!

私の質問は、動的な任意型を戻り値とする関数を作ることは可能でしょうか??という事です。
したい事は、
template <typename T>
T ret(int arg)
{
If(arg==0)return static_cast<hoge>(arg);
else if(arg==1)return static_cast<hage>(arg);
}
でホゲ型とホラン千秋型を引数によって変化させて返却したいのです……が、
私が見ても無理そうな感じなのです。ニパー
そもそもテンプレートってコンパイル時点で推察できないと無理ですよね?
この悩みに何か方法や別解があったりしたら教えていただきたく、スレ汚しを失礼しております。

感謝は先に申し上げておきます。
ありがとうございます!
2022/09/22(木) 17:27:40.84ID:vBAk//C3
>>737
一般的には型システムの健全性と安全性のために
そのような用途では代数的データ型(タグ付き共用体)を用いる
C++ではstd::variantであるがパターンマッチングなどの言語サポートがないため若干扱いにくい
2022/09/22(木) 19:28:31.52ID:He0eupRY
>>737
実行時の多相は抽象クラスを使うのが基本ということになってる。
その場合で言えば hoge と hage が共通のインターフェイスを持つ (抽象クラスを継承する) ようにクラス設計するのが普通。
まずは抽象クラスを学んでみて。

最初からクラス設計に関与することが出来ない場合 (既存のライブラリなので手を加えられないなど)
に動的に切り替える必要があるなら std::variant や std::any が使えるのだけれど……
使う箇所で元の型にキャストしなおしたり、 std::visit を経由したりで煩雑になりがち。
2022/09/22(木) 21:37:36.04ID:PsWl+Otb
anyってstdに入ってるんだ!
2022/09/22(木) 22:12:16.21ID:PsWl+Otb
>>737
argがコンパイル時点で決定しているのならやりようはあるが
実行時まで決まらないのならみなさんの言う通り
retをどう使うのか呼び出し側のコードを書いてみてよ
2022/09/22(木) 22:27:10.41ID:He0eupRY
>>740
入ったのは C++17 だし、あまり積極的には使わない種類のものだから目立たないよな……
2022/09/23(金) 00:25:25.16ID:LrToOuio
any使えばクソコードは書けるがw

#include <iostream>
#include <any>
using namespace std;
struct hoge {
int value_;
hoge (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
struct hage {
int value_;
hage (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
std::any ret(int arg)
{
if(arg==0)return hoge (arg);
else if(arg==1)return hage (arg);
return std::any ();
}
int main () {
try {
any_cast <hoge> (ret (0)).output (cout) << endl;
any_cast <hage> (ret (1)).output (cout) << endl;
any_cast <hoge> (ret (1)).output (cout) << endl; // An exception will be thrown.
} catch (const std::bad_any_cast &) {
cerr << "std::bad_any_cast\n";
return -1;
}
return 0;
}
744デフォルトの名無しさん
垢版 |
2022/09/23(金) 02:10:00.16ID:gD4It3Ab
Python や tcl のコードだな
2022/09/23(金) 02:31:56.65ID:LrToOuio
argがコンパイル時に決まってるなら例えば以下の通りにディスパッチ
Loki::Int2Typeって今はC++に入ってるっけ?
#include <iostream>
using namespace std;
namespace Loki {
template <int v>
struct Int2Type {
enum { value = v };
};
}
struct hoge {
int value_;
hoge (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
struct hage {
int value_;
hage (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
hoge ret(Loki::Int2Type <0> p){return hoge (Loki::Int2Type <0>::value);}
hage ret(Loki::Int2Type <1> p){return hage (Loki::Int2Type <1>::value);}
int main () {
ret (Loki::Int2Type <0> ()).output (cout) << endl;
ret (Loki::Int2Type <1> ()).output (cout) << endl;
return 0;
}
746デフォルトの名無しさん
垢版 |
2022/09/23(金) 17:57:04.27ID:tVlOtcCS
>>738
>>739
返信ありがとうございます。
variantで返すかUnionのようなもので返すか、という事ですね。
Unionの存在を初めて知ったので、できれば使いたいと思います。
2022/09/23(金) 18:13:00.58ID:MklXD0R7
そういう用途でタグ無しunionは危険で不便な昔の遺物
どの言語でも安全で便利なタグ付きunionを用いる
C++はパターンマッチングが弱いのでそこを改善すればさらに便利になるはずだ
2022/09/23(金) 19:52:56.72ID:Ztvb6Y4W
無名の共用体
anonymous union
2022/09/23(金) 23:41:53.30ID:icgBEU6J
anonymous union というとなにかこう、不穏なひびきがあるな
集団で徒党をくんでハッキングする的な
2022/09/24(土) 00:05:53.42ID:G+JpnkhJ
そもそも文脈なしのunionって労働組合だからもともと不穏な響きの単語
2022/09/24(土) 00:18:57.85ID:JL9pTOdW
ネトウヨ現る
2022/09/24(土) 00:38:49.83ID:Pnjq2Ki8
Union Jack
2022/09/24(土) 00:38:55.02ID:NrutJXN/
「集団」で「徒党」を組むって
754デフォルトの名無しさん
垢版 |
2022/09/24(土) 20:29:13.36ID:7pBAspe1
Visual Studio Community おそろしあ
2022/09/24(土) 22:05:06.81ID:51wpUqA8
チューリンからメール北?
2022/09/26(月) 08:57:53.30ID:Fzzl8jy0
>>751
何が見えてるの…
757デフォルトの名無しさん
垢版 |
2022/09/26(月) 21:36:36.83ID:T6INyDl8
ちょっとわからなくなってきたため良ければ教えてください。
他言語を使用していて強く感じることですが、.hと.cppを行ったり来たりする開発スタイルがかなり面倒に感じます。
ヘッダに実装を書いても普通にビルド出来てしまうため個人的な開発はヘッダオンリで済ませています。
何番煎じの話かもしれませんが、分割するしないでのメリット・デメリットを教えてください。
2022/09/26(月) 21:41:04.85ID:yuD7kgln
再コンパイルコストとインターフェイスと実装の分離

hに全部書いてしまうと、それの変更があった場合にincludeするすべてのファイルで再コンパイルが走り、時間がかかるようになる
hに全部書くため、変更の機会も当然多くなり、頻繁にビルド待ちの状態になるのは避けたい

インターフェイスと実装を分離しておくことは、保守や共有の最、理解を早くするという点で有用

どっちの話も大規模になると効いてくる話なので、小規模開発なら全部.hに書くスタイルでも構わないとは思う
2022/09/27(火) 09:30:59.47ID:ozjafOA0
>>757
C の延長線上でなんとかしてきた C++ の言語仕様があんまり良くないんだよ……。
実装とインターフェイスを分けるのはカプセル化の観点からも好ましいのだけれど
C++ ではテンプレートを処理する都合上でこの分離が破綻しているので
そこらへんはまあ運用の工夫で……みたいな微妙な機微がある。

どうにもならんのがわかってるから新しい C++ ではようやくモジュールが導入された。
760デフォルトの名無しさん
垢版 |
2022/09/27(火) 09:41:59.52ID:ZJUDc1gE
FILE * は使っても
struct FILE の中身なんて知らなくて良いからな
使うだけなら void * で充分
2022/09/27(火) 11:09:05.55ID:HLZr1vWv
c#みたいにヘッダ無いのが良いことだとは思えんのだよなあ
2022/09/27(火) 11:20:16.93ID:XJRFtCjW
C#だけでなく今世紀のプログラミング言語は全てヘッダファイルなんて無いんじゃない?
不要なものなんだと思うよ
2022/09/27(火) 11:28:04.52ID:dmYM9sG7
.hppって拡張子でヘッダに処理を書いてるのを見たことある
2022/09/27(火) 14:13:36.82ID:ozjafOA0
>>763
.hpp は C++ のヘッダとしてはありふれた拡張子。 定義を書くかどうかとは関係なく使われるよ。
昔は .hxx とか .h++ とかもあったし、テンプレートが含まれるヘッダには .tcc と付ける習慣が一部にはあった。
大文字で .H とか付けてるのも有ったけどファイルシステムによっては大文字と小文字が区別されないから早い内に廃れたと思う。

C と共用できるように書かれたヘッダを除いては .h という拡張子は避けたほうが運用しやすいと思うんだが、
そこらへんの考え方も慣例が確立していなくてなんだかグダグダなんだよなぁ。
2022/09/27(火) 18:54:18.35ID:vGdotfW0
>>763
template主体ならhppにガッツリ書いてたけど、ちな、どこに書くの?
2022/09/27(火) 19:06:22.22ID:c5I+FNto
ヘッダはテンプレートでごちゃごちゃしてなければどんな構造してるのかパッと見で分かりやすい
2022/09/27(火) 19:11:23.36ID:3EQ0ZEAi
ヘッダに実装書く必要がある場合は
俺はインターフェース用ヘッダと実装用ヘッダに分けてるな
ヘッダには本来インターフェースのみが簡潔に書かれているのが望ましいと思う
2022/09/27(火) 20:14:12.91ID:eLTt/hKm
他のプログラミング言語はヘッダファイルが無くても困っていないから
ヘッダファイルは大昔当時のCコンパイラがサボるために用意しただけの本来は要らない子なんじゃ?
2022/09/27(火) 20:35:59.29ID:c5I+FNto
ソース公開出来ないようなハード実装ライブラリを隠蔽して提供するためにはヘッダは必須項目
2022/09/27(火) 20:41:17.15ID:WqTtjjk3
>>769
ハード実装をヘッダで表現することはできません
ソフト実装のみです
2022/09/27(火) 20:49:31.24ID:3EQ0ZEAi
>>768
必須じゃないけど便利だよ
使いたいけど実装なんか見たくないときは
プロトタイプだけヘッダに書かれてれば
それだけ見てれば良い
2022/09/27(火) 21:01:15.67ID:uWssz7Bg
>>771
時代遅れすぎだろw
今はそんなヘッダファイルを見なくても
ヘッダファイルが存在しなくても
ソースファイルから自動抽出されたもっと見やすい表示や生成ドキュメントを見る
だからC/C++以外はヘッダファイルなんて存在しない
2022/09/27(火) 21:05:03.18ID:3EQ0ZEAi
>>772
>ソースファイルから自動抽出されたもっと見やすい表示や生成ドキュメントを見る
それはヘッダがないから仕方なくなのではないかな?
C++でも自動抽出ツールされたドキュメントを見ても良いのだよ
2022/09/27(火) 21:08:18.80ID:j15wYqDV
>>773
つまりヘッダファイルの必要性はない、との結論になりますな
2022/09/27(火) 21:10:16.49ID:3EQ0ZEAi
ならない
2022/09/27(火) 21:23:27.93ID:ozjafOA0
実装とインターフェイスを分離するという根本思想自体はよかったと思う。
それを実現するためにプリプロセッサで単純にヘッダをはめ込むというのは雑すぎるやり方だとも思う。
2022/09/27(火) 21:36:37.50ID:D5WhN1Dz
他の言語はヘッダ無くても何も困っていないから
本質的にはヘッダは不要物なのだと思われる
2022/09/27(火) 22:23:04.59ID:vPBo+Ol+
マルチパスコンパイルするオプションがコンパイラにあればいいのにね
2022/09/27(火) 22:28:17.08ID:TG8VJWwA
>>777
古い bcc には、確かヘッダを自動抽出するオプションがあった気がする
2022/09/27(火) 22:39:41.48ID:EwsxhlHO
仕組みが簡潔でドライなシステムを好む人もいるし
もはや把握しきれないカオスなシステムに帰依する人もいる

俺は前者だし、これからもそうありたい
2022/09/27(火) 22:51:33.49ID:c5I+FNto
カオスは崩壊へと繋がる
ATiのCatalystのようにな
2022/09/27(火) 23:37:44.35ID:3EQ0ZEAi
実装とインターフェイスの分離の点でC++が甘いのは
classのメンバー変数がヘッダに書くところ
俺はデフォルトでpimplにしてるけど
2022/09/27(火) 23:55:22.40ID:TrPk/9km
>>780
最近の言語はどれもその簡潔な方式だよ
ヘッダファイルとソースファイルは二重管理だからソースファイルに統一
さらにソース付随コメントとドキュメントファイルも統合してソースファイルにのみ記述
シンプルになってる
2022/09/28(水) 00:14:01.17ID:SR5jaMok
自動生成みたいなことしても、特に見通しがよくなっとらんと思うんだよね
ヘッダファイルじゃなくてもいいけど、どこかでユーザにインタフェース提示を強制する必要はある気がする
2022/09/28(水) 00:21:27.19ID:2Lj4foK2
>>784
多くの言語は関数定義かそのままインターフェース宣言を兼ねていて一元化されてるよね
バラバラに用意することこそ不自然なのよ
2022/09/28(水) 00:52:38.13ID:qgMCZEH2
いや俺はインターフェースは簡潔にヘッダーにまとまってる方が良い
管理が二重になっている云々は同意せんでもないが
同一性はコンパイラがチェックしてくれるので全く問題なし
ドキュメントの自動生成ってリアルタイムに更新してくれるんかいな?
Doxygenみたいなのを想像してるんだが?
2022/09/28(水) 00:54:10.34ID:qgMCZEH2
C++に慣れすぎて実装とインターフェースが混在してるソース見ると
俺は読みたくなくなるんだが?
2022/09/28(水) 00:57:52.51ID:ipyGSCwr
>>787
めちゃめちゃわかりすぎる
関数なりクラスなりの定義部分だけ切りだして別ドキュメントにまとめてくれや(’A’)
っていう気分にいなる
2022/09/28(水) 01:57:05.38ID:wKFGQzb0
>>785
いや兼ねていてというか、ない
だからサポートするソフトが何らかの方法で提示してるんだけど、必ずしも見やすくなってないのは問題
2022/09/28(水) 02:35:16.76ID:koSj9wX0
>>768
ヘッダを分けるのは最初は処理系の実装上の都合だったのは事実だと思う。
素朴なオブジェクトファイルは名前とアドレスの組でしか管理していない。
具体的な型をやりとりする仕組みは必要で、それがヘッダファイル。

リンカなどのツールチェインが充実していないのを
コンパイラとプリプロセッサがカバーする形なのでツールチェイン全体が上手く連携できるなら
ヘッダという仕組みは無くても良い。

それはそれとして処理に必要かどうかと言語の表現はまた別問題だ。
原理的に必要かどうかだけで言うならバイナリエディタだけあればプログラムは作れることになってしまうよ。
言語は機械に処理させる以上に人が読み書きする。

もちろんどんな言語が分かり易いかは人によるだろうけども
C++ に満足している C++ ユーザは実装とインターフェイス分離することを利点だと考えている場合は確実に多いよ。
私もそうだし。
2022/09/28(水) 05:55:54.63ID:8U6H9Gn3
単にヘッダファイルに慣れていて愛着があるだけです
冷静に考えれば分かります
他の言語はヘッダファイルがなくても機能しています
つまりヘッダファイルは不要なものです
他の言語はヘッダファイル方式を採用しませんでした
つまりヘッダファイルを採用するに値するアドバンテージはありません
2022/09/28(水) 08:10:47.02ID:PNF1OAD8
今は必要に応じてIDLを使うようになっているだけじゃない?Protobufぐらいしか知らないけど。
2022/09/28(水) 08:51:33.64ID:qgMCZEH2
>>791
C++もヘッダに実装書けば似たようなソースになるけど
読み難いんだってば
2022/09/28(水) 09:19:16.30ID:H8fqr1nL
c#のプロジェクト、実装してから設計起こした様なグダグダなのばっかになってるよね
pythonだとそうはならん気がするけど
2022/09/28(水) 22:49:08.92ID:6+yt9OFm
obj や lib だけを提供する場合は、ヘッダは絶対に必要かと
他の言語ではどうしていますか?
2022/09/29(木) 03:41:22.05ID:6tct/z4w
ヘッダは無くてもいいがある方が便利なときがある

使い回すマクロの定数とか定義とかヘッダに書くのが一般だし
誰かが書いてたけどヘッダファイルに関数の説明とか書くスタイルなら
そこだけ見れば済むようになるし

無くても困らないけど結局は
include xxx.c なんてソースコードを見ることなると思う
2022/09/29(木) 03:46:51.96ID:6tct/z4w
>>795
javaは起動するときに.classファイルの中にある関数名を見てるのが
通常じゃないのかな
2022/09/29(木) 04:34:33.18ID:MD5zUQsY
ラムダ式でコピーキャプチャした変数ってなんでデフォルトで immutable なの?

あとそれに関連してるかもしれないけど、const int a があったとして、a をコピーキャプチャして mutable をつけたラムダ式の中で a を変更しようとすると許されないんだけど、これもなんで?
2022/09/29(木) 06:34:14.97ID:Jka8tyPG
最初にラムダ入れた時の設計ミス
2022/09/29(木) 07:34:10.57ID:u1XdWODd
ミスか?
俺はGJと思ったぞ
constの逆は欲しかった
明示的に書き込み許可すんの
2022/09/29(木) 08:13:36.08ID:HMWtGy3T
>>795
ドキュメントを配る
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況