[cppll:8685] Re: クラスの名前を引っ張ってくるには
ぶーちゃんです。
From: "Shin'ya MORINO" <smorino@...>
Subject: [cppll:8684] Re: クラスの名前を引っ張ってくるには
Date: Sat, 10 May 2003 01:29:48 +0900
Message-ID: <3ebbd0b2.896%smorino@d1.dion.ne.jp>
> 森野です。
>
> Osamu Shigematsuさんの<20030509165439.8707.M5ISSIGE@mr.hitachi-medical.co.jp>から
> >重松です。こんにちは。
> さーらーに、こんばんやっ。
>
> >ところで、mangle/demangle っていったいどういうことなんでしょうか?
> 過去ログ、ご参照くださいませ。
> # http://www.tietew.jp/cppll/archive/2268
>
> >英和辞書を引いたら、頓珍漢な訳語が出てきたのですが、
> そーなんでしょーかね。切り刻む、とか。
> 実際、文字列が切り刻まれてるみたい。 # ってほんとー?
こんな訳もあるみたいです。(Readers 英和辞典より)
《誤記・誤植などで》〈引用・テキストなどを〉だいなしにする
《へたな発音で》〈ことばを〉わからなくする.
> C++は、なるべく、Cのインフラストラクチャーを利用できるよう、設計された
> と、どこかで読んだです。
> # επιさんの日常本だったと思うのですが.....
> # 今、みつけられません。うーん.....
第 2 章「C++ の歴史のお話」にありますね。
> とのことで、Cのリンカを流用できるように、関数のシンボルを、Cの関数とし
> て扱えるようにする必要があったのかと。
私が C++ を始めた環境では、コンパイラは C++ に対応していたものの、リン
カ、デバッガは C のものでした。ですので、人間 demangling は必須状態で
した。(その頃の一般的環境がどうだったかは知りませんが)
# そんなに沢山オーバーロードする訳でないので厳密でなくても良かったのが
# 救いでした。
## でも数ヶ月でたまりかねてリンカ、デバッガを差し替えました。
From: "Shin'ya MORINO" <smorino@...>
Subject: [cppll:8684] Re: クラスの名前を引っ張ってくるには
Date: Sat, 10 May 2003 01:29:48 +0900
Message-ID: <3ebbd0b2.896%smorino@d1.dion.ne.jp>
> 森野です。
>
> Osamu Shigematsuさんの<20030509165439.8707.M5ISSIGE@mr.hitachi-medical.co.jp>から
> >重松です。こんにちは。
> さーらーに、こんばんやっ。
>
> >ところで、mangle/demangle っていったいどういうことなんでしょうか?
> 過去ログ、ご参照くださいませ。
> # http://www.tietew.jp/cppll/archive/2268
>
> >英和辞書を引いたら、頓珍漢な訳語が出てきたのですが、
> そーなんでしょーかね。切り刻む、とか。
> 実際、文字列が切り刻まれてるみたい。 # ってほんとー?
こんな訳もあるみたいです。(Readers 英和辞典より)
《誤記・誤植などで》〈引用・テキストなどを〉だいなしにする
《へたな発音で》〈ことばを〉わからなくする.
> C++は、なるべく、Cのインフラストラクチャーを利用できるよう、設計された
> と、どこかで読んだです。
> # επιさんの日常本だったと思うのですが.....
> # 今、みつけられません。うーん.....
第 2 章「C++ の歴史のお話」にありますね。
> とのことで、Cのリンカを流用できるように、関数のシンボルを、Cの関数とし
> て扱えるようにする必要があったのかと。
私が C++ を始めた環境では、コンパイラは C++ に対応していたものの、リン
カ、デバッガは C のものでした。ですので、人間 demangling は必須状態で
した。(その頃の一般的環境がどうだったかは知りませんが)
# そんなに沢山オーバーロードする訳でないので厳密でなくても良かったのが
# 救いでした。
## でも数ヶ月でたまりかねてリンカ、デバッガを差し替えました。
▼ スレッド
- 8646: 今書いているプログラムなんですが、基底クラスに、 virtual RWCString getClassName() const; というのが Osamu Shigematsu
- └8647: ちっす。 __PRETTY_FUNCTION__をお試しくださいな。(^^ class A { public: void foo() { std::cout << __PRETTY_FUNCTION_ Shin'ya MORINO
- └8651: さくっと試したら、期待の動作になりました。 が...、 http://www.cqpub.co.jp/interface/column/freesoft/2003/ Osamu Shigematsu
- ├8654: やりぃ。 実は、おもいっきし、環境依存対処法でした。失礼。 g++的には、 __FUNCTION__ = __func__ Shin'ya MORINO
- ├8655: class A { public: void foo() { std::cout << typeid(this).name() << "::" << __func__ << std::endl; } 森野慎也 mailto:smorino@ Shin'ya MORINO
- │└8659: 幸いにして、RTTI は使えるので、(当然?) を試したんですが、これだと、 P1A::foo Osamu Shigematsu
- │ ├8660: 高橋(k)です。 TAKAHASHI, kohske kohske‐at‐msc.biglobe.ne.jp TAKAHASHI, Kohske
- │ └8661: type_info::name() は処理系が勝手に決めた文字列を 返せばいいんだそうな。 だから "教えない" と FUKUDA Fumiki
- │ └8662: 文句をゆーのは、堪忍して、あ・げ・る。 だーけーど、許してあげないんだわさー。 >> g++君 Shin'ya MORINO
- │ └8672: g++君は、教えてくれました。 typeid().name()が、返すのは、マングリングされた名前ですよねー。 Shin'ya MORINO
- │ └8677: extern "C" char *__cxa_demangle (const char *__mangled_name, char *__output_buffer, __SIZE_TYPE__ *__length, int *__status); と Osamu Shigematsu
- │ ├8678: mangling の C++ での意味としては「引数の型情報を関数名に付加する」 名古屋大学大学院 情報科 Takao Ono
- │ ├8683: こんばんやっ。(^^ ソース、見てないんですが、単に、__output_bufferの値を、そのまま返して Shin'ya MORINO
- │ └8684: さーらーに、こんばんやっ。 そーなんでしょーかね。切り刻む、とか。 実際、文字列が切り刻 Shin'ya MORINO
- │ └8685: 《誤記・誤植などで》<引用・テキストなどを>だいなしにする 《へたな発音で》<ことばを>わか boochang
- └8666: C++ネタとは関係ないかもしれませんが…。 C99には「__func__」という前定義識別名というのがで seraphy
- ├8667: 盲目的に C 言語の規格に追従することはないでしょうけど, それなりに 名古屋大学大学院 情報 Takao Ono
- └8671: ちーっす。 Bjarne Stroustrup御大のC/C++ Users Journal記事が、やはり、CとC++のいと こ関係について、 Shin'ya MORINO