前スレ
C++相談室 part160
https://mevius.5ch.net/test/read.cgi/tech/1649979572/
C++相談室 part161
レス数が1000を超えています。これ以上書き込みはできません。
2022/05/21(土) 21:23:29.59ID:kYXfaM+5
978デフォルトの名無しさん
2022/10/26(水) 01:56:10.10ID:U/bwzoe1 >>976
>ごめん、tools/driver/driver.cppだった。321行目あたりにmainあるけどこれじゃないの?
そのサイトは、mirrorサイトで「legacy」とされ、だいぶ古いバージョンなんです。
最新バージョンのソースでは、driver.cpp には clang_main()しかないと思います。
cmakeすると、buildフォルダに、
int main(int argc, char *argv[]) { return clang_main(argc, argv); }
のような一行の関数が出来ます。
>ごめん、tools/driver/driver.cppだった。321行目あたりにmainあるけどこれじゃないの?
そのサイトは、mirrorサイトで「legacy」とされ、だいぶ古いバージョンなんです。
最新バージョンのソースでは、driver.cpp には clang_main()しかないと思います。
cmakeすると、buildフォルダに、
int main(int argc, char *argv[]) { return clang_main(argc, argv); }
のような一行の関数が出来ます。
979デフォルトの名無しさん
2022/10/26(水) 02:33:27.35ID:U/bwzoe1 >>978
(1) 本当の clang の main() 関数本体 :
(llvm-project-main/clang/tools/driver/driver.cpp):
int clang_main(int Argc, char **Argv) {
・・・
・・・
}
(2) clang_main() を呼び出す main() 関数 :
(llvm-project-main/build/tools/clang/tools/driver/clang-driver.cpp):
↑
build は、cmake の destination ディレクトリです。
int clang_main(int argc, char **argv);
int main(int argc, char **argv) { return clang_main(argc, argv); }
↑本当にこんな風に一行の関数になっています。恐らく、cmake が
生成したものと思われます。
(1) 本当の clang の main() 関数本体 :
(llvm-project-main/clang/tools/driver/driver.cpp):
int clang_main(int Argc, char **Argv) {
・・・
・・・
}
(2) clang_main() を呼び出す main() 関数 :
(llvm-project-main/build/tools/clang/tools/driver/clang-driver.cpp):
↑
build は、cmake の destination ディレクトリです。
int clang_main(int argc, char **argv);
int main(int argc, char **argv) { return clang_main(argc, argv); }
↑本当にこんな風に一行の関数になっています。恐らく、cmake が
生成したものと思われます。
980デフォルトの名無しさん
2022/10/26(水) 09:07:24.21ID:AzbtQsoy981デフォルトの名無しさん
2022/10/26(水) 09:39:06.48ID:8n8wOLOb >>968
やはりrequiresを1行足すしかないか...
template<allow_ref<std::integral> T>
void func(T&&);
とでも書きたかったけど、コンセプトを受け取るテンプレートが書けないっぽいから諦めた
やはりrequiresを1行足すしかないか...
template<allow_ref<std::integral> T>
void func(T&&);
とでも書きたかったけど、コンセプトを受け取るテンプレートが書けないっぽいから諦めた
982デフォルトの名無しさん
2022/10/27(木) 02:01:40.47ID:XIiqnbUh clangのソースで、CPUのマシン語を生成している場所を調べていて、
X86AsmPrinter クラスや X86MCInstLower クラスがそれに強く関与していることが分かって
きました。
X86AsmPrinter クラスや X86MCInstLower クラスは、お互いに参照されてますが、
この2つのクラスは、いずれも「作られている場所」が見つかりません。
「作られている」とは、new X86AsmPrinter や、X86AsmPrinter a;、
new X86MCInstLower や X86MCInstLower b; のようにしている場所です。
どなたか分かりませんか?
X86AsmPrinter クラスや X86MCInstLower クラスがそれに強く関与していることが分かって
きました。
X86AsmPrinter クラスや X86MCInstLower クラスは、お互いに参照されてますが、
この2つのクラスは、いずれも「作られている場所」が見つかりません。
「作られている」とは、new X86AsmPrinter や、X86AsmPrinter a;、
new X86MCInstLower や X86MCInstLower b; のようにしている場所です。
どなたか分かりませんか?
983デフォルトの名無しさん
2022/10/27(木) 02:32:01.95ID:XIiqnbUh >>982
すみません、多分、以下の部分ですね。
これで、new X86AsmPrinterしたアドレスを、getTheX86_32Target()やgetTheX86_64Target()
が返した Target クラスのシングルトンのインスタンス xxx に対して
xxx.AsmPrinterCtorFn = アドレス;
のように記録しているようです。
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86AsmPrinter() {
RegisterAsmPrinter<X86AsmPrinter> X(getTheX86_32Target());
RegisterAsmPrinter<X86AsmPrinter> Y(getTheX86_64Target());
}
template <class AsmPrinterImpl> struct RegisterAsmPrinter {
RegisterAsmPrinter(Target &T) {
TargetRegistry::RegisterAsmPrinter(T, &Allocator);
}
private:
static AsmPrinter *Allocator(TargetMachine &TM,
std::unique_ptr<MCStreamer> &&Streamer) {
return new AsmPrinterImpl(TM, std::move(Streamer));
}
};
/// TargetRegistry - Generic interface to target specific features.
struct TargetRegistry {
・・・
static void RegisterAsmPrinter(Target &T, Target::AsmPrinterCtorTy Fn) {
T.AsmPrinterCtorFn = Fn;
}
・・・
};
すみません、多分、以下の部分ですね。
これで、new X86AsmPrinterしたアドレスを、getTheX86_32Target()やgetTheX86_64Target()
が返した Target クラスのシングルトンのインスタンス xxx に対して
xxx.AsmPrinterCtorFn = アドレス;
のように記録しているようです。
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86AsmPrinter() {
RegisterAsmPrinter<X86AsmPrinter> X(getTheX86_32Target());
RegisterAsmPrinter<X86AsmPrinter> Y(getTheX86_64Target());
}
template <class AsmPrinterImpl> struct RegisterAsmPrinter {
RegisterAsmPrinter(Target &T) {
TargetRegistry::RegisterAsmPrinter(T, &Allocator);
}
private:
static AsmPrinter *Allocator(TargetMachine &TM,
std::unique_ptr<MCStreamer> &&Streamer) {
return new AsmPrinterImpl(TM, std::move(Streamer));
}
};
/// TargetRegistry - Generic interface to target specific features.
struct TargetRegistry {
・・・
static void RegisterAsmPrinter(Target &T, Target::AsmPrinterCtorTy Fn) {
T.AsmPrinterCtorFn = Fn;
}
・・・
};
984デフォルトの名無しさん
2022/10/27(木) 02:43:40.35ID:InDGsMhW なんかコンセプト以前にテンプレートにもあまり慣れてなさそう
985デフォルトの名無しさん
2022/10/27(木) 02:44:18.56ID:XIiqnbUh 間違えました。
xxx.AsmPrinterCtorFn に登録しているのは、new X86AsmPrinterの
アドレスではなく、
RegisterAsmPrinter<X86AsmPrinter>::Allocator(・・・)
のアドレスのようですね。
そして、このAllocator (==関数)を呼び出すと、new X86AsmPrinter
を行なえるようです。
xxx.AsmPrinterCtorFn に登録しているのは、new X86AsmPrinterの
アドレスではなく、
RegisterAsmPrinter<X86AsmPrinter>::Allocator(・・・)
のアドレスのようですね。
そして、このAllocator (==関数)を呼び出すと、new X86AsmPrinter
を行なえるようです。
986デフォルトの名無しさん
2022/10/27(木) 08:37:49.38ID:yP/aIJbf 関係ないけどあんまりnewせんほうがええよ
それしかないと思ってるならちょっと古い感じ
それしかないと思ってるならちょっと古い感じ
987デフォルトの名無しさん
2022/10/27(木) 22:03:08.74ID:+UGgATct あんまりデータメンバに直アクセスしないほうがええよ
あんまりグローバル変数使わんほうがええよ
あんまりSendMessageを直に使わんほうがええよ
あんまりナマポ使わんほうがええよ
あんまりアセンブラ使わんほうがええよ
あんまりC++使わんほうがええよ
ラップしろってことだろうけど
一切離れたやつはもうC++使いじゃない
あんまりグローバル変数使わんほうがええよ
あんまりSendMessageを直に使わんほうがええよ
あんまりナマポ使わんほうがええよ
あんまりアセンブラ使わんほうがええよ
あんまりC++使わんほうがええよ
ラップしろってことだろうけど
一切離れたやつはもうC++使いじゃない
988デフォルトの名無しさん
2022/10/28(金) 00:40:37.68ID:sQHy7sst989デフォルトの名無しさん
2022/10/28(金) 08:56:31.64ID:+oOKe7Yr 可変長テンプレートはじみて使ったけど便利だなこれ
990デフォルトの名無しさん
2022/10/28(金) 09:06:12.57ID:kPJo8naK threadがあんなに使いやすくなっているのは
ひとえにtemplate-parameter-packのおかげ
ひとえにtemplate-parameter-packのおかげ
991デフォルトの名無しさん
2022/10/29(土) 23:34:49.08ID:Ank2ZEY0 >>950の話は終わりかな?
レスついたけど反論がないようだけど
レスついたけど反論がないようだけど
992デフォルトの名無しさん
2022/10/30(日) 03:51:06.75ID:i1fpLCEI 5ch始めたばかりなのかな?
993デフォルトの名無しさん
2022/10/30(日) 11:42:15.05ID:/mJPvv5N 気になるじゃん
994デフォルトの名無しさん
2022/10/30(日) 15:52:08.41ID:zpZIwFpu 仕事ハネた後のヨレヨレ状態で見てるから
長文()を読もうとすると寝落ちしかねない
長文()を読もうとすると寝落ちしかねない
995デフォルトの名無しさん
2022/10/31(月) 13:27:29.89ID:Q1JWQuIa VC++ や GCC で <cstddef> をインクルードすると、
std の明⽰的修飾、using 宣言、using 指令がなくても
size_t が使えるのですが、これは C++ 標準の仕様ですか?
std の明⽰的修飾、using 宣言、using 指令がなくても
size_t が使えるのですが、これは C++ 標準の仕様ですか?
996はちみつ餃子 ◆8X2XSCHEME
2022/10/31(月) 13:53:23.25ID:HpV/6ZOj >>995
いいえ。 未規定です。
std 名前空間内で定義されることは当然に保証された動作ですが、
グローバルには定義されてもされなくてもかまいません。
逆に言えばグローバルに定義されていることはありうると想定する必要があります。
(なので自分が定義する名前がそれに衝突しないようにするべきです。)
いいえ。 未規定です。
std 名前空間内で定義されることは当然に保証された動作ですが、
グローバルには定義されてもされなくてもかまいません。
逆に言えばグローバルに定義されていることはありうると想定する必要があります。
(なので自分が定義する名前がそれに衝突しないようにするべきです。)
997デフォルトの名無しさん
2022/10/31(月) 13:55:26.92ID:cQbFxG4K size_tを知らんでもsizeofは使える?
998はちみつ餃子 ◆8X2XSCHEME
2022/10/31(月) 14:17:38.34ID:HpV/6ZOj999デフォルトの名無しさん
2022/10/31(月) 14:31:14.54ID:J5sgTSch C++相談室 part162
https://mevius.5ch.net/test/read.cgi/tech/1667194175/
https://mevius.5ch.net/test/read.cgi/tech/1667194175/
1000デフォルトの名無しさん
2022/10/31(月) 14:31:53.89ID:J5sgTSch 立てました
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 162日 17時間 8分 25秒
新しいスレッドを立ててください。
life time: 162日 17時間 8分 25秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★4 [BFU★]
- 小野田氏、”中国経済への依存“に警戒感 高市首相の国会答弁巡り [煮卵★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 日本が「世界で最も魅力的な国」1位に!✨「魅力的な都市」では東京が2位 「魅力的な地域」は北海道が7位に [煮卵★]
- 【サッカー】独占入手 最年長JリーガーにW不倫疑惑 『お風呂覗きたいんですが笑』LINE流出も… 慰謝料トラブルを本人に直撃 [冬月記者★]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 【高市速報】日本「中国さんお願い首脳会談させて!ねえってば!😭」 [931948549]
- とうすこ🏡愛され絵文字♡🤥👊😅👊👶♡
- 浜田省吾に「チェリーボーイ」って曲あったっけ? [369521721]
- 中国とのパイプ役がいない高市政権、実施詰みか [668970678]
- ネトウヨ、完全に終わる 「高市さんの『台湾が武力攻撃された場合』というのは『米中戦争が勃発した場合』って意味に決まってるだろ!」 [314039747]
