- 1 名前:デフォルトの名無しさん [2009/01/11(日) 11:21:38 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part65 pc11.2ch.net/test/read.cgi/tech/1230341243/
- 552 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:49:15 ]
- んばば んばんば えらったえらった
- 553 名前:544 mailto:sage [2009/04/11(土) 23:51:04 ]
- >>551
いや、日本語でググったりピアソンエデュケーション社の Webページで検索してみたりしたんだが英語は見落としていた。 ありがとう、恩に着る。
- 554 名前:545 mailto:sage [2009/04/11(土) 23:55:38 ]
- >>548
ローカルでは関数の宣言だけは出来るけど定義はできないんだよね。 ありがとう。
- 555 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:57:37 ]
- >>550
いや、カッコつけなければいいだけ。
- 556 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:31:48 ]
- >>555
じゃなくてstd::stringのコンストラクタ呼び出したいんだけど
- 557 名前:555とは別人 mailto:sage [2009/04/12(日) 00:35:04 ]
- >>556
だから括弧つけなければいいなじゃないの? std::string foo; これでデフォルトコンストラクタ呼び出しになるでしょ?
- 558 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:36:12 ]
- デフォルトコンストラクタの話じゃなかったのか。
デフォルトじゃないなら引き数書くのは当たり前だろ。
- 559 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:46:26 ]
- なんだ?
未来指向なプログラムの話か?
- 560 名前:まとめ mailto:sage [2009/04/12(日) 00:53:22 ]
- 要は
1. std::string str="hogehoge"; ならstrの宣言&"hogehoge"を引数にとるコンストラクタの呼び出しとなる。 2. std::string str("hogehoge"); って書いてもstrの宣言&"hogehoge"を引数にとるコンストラクタの呼び出しとなる。 3. std::string str(const char* arg); ならstd::string型を返し、const char*を引数にとる関数strの宣言となる。 これを引数なしverにすると 1'. std::string str; ならstrの宣言&デフォルトコンストラクタの呼び出しとなる。 2'&3'. std::string str(); ならstd::string型を返し、引数のない関数strの宣言となる。 ってことだよね。 たぶんこのスレのみんなは分かっているけどレスが言葉足らずでカオスになっているだけかと。
- 561 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 01:17:31 ]
- >>556
もし、本当に「デフォルトコンストラクタを呼び出したいだけ(変数は用意したくない)」なら std::string(); と書けば呼べるだろうね。 もちろん、ソース上には現れない一時変数が用意されるだけだけど。 普通に「デフォルトコンストラクタで初期化される変数を用意したい」ならば 皆が書いているように std::string str; とすれば良いだけ。
- 562 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:26:49 ]
- 純粋なC++で、初心者でもないのにgotoを使う人って見たことある?
やるとしたらスパゲッティにならないで使える人なんだろうけど。
- 563 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:59:10 ]
- goto使えば二重三重ループから一気に抜けられるじぇ
- 564 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:16:02 ]
- あなた天才
- 565 名前:562 mailto:sage [2009/04/12(日) 16:26:45 ]
- まあネストしたループから一気に抜けるって使い方か。
別の方法としてわざと例外をthrowしてるヤツがいたけど それよりはマシか。 変なフラグ変数用意するくらいならgotoのがいいのだろうか?
- 566 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:28:22 ]
- フラグ変数なんか使うな
プログラムの見通しが悪くなる
- 567 名前:562 mailto:sage [2009/04/12(日) 16:31:09 ]
- >>566
ですよねー。 俺もそう思うよ。 サンプルソースならともかく flagとかhogeっていうフラグ変数を 用意しているヤツを見ると もう頭痛がしてくる。
- 568 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:35:57 ]
- クラス設計で、メンバ関数はどの順番で記述する?
例えば基底クラスでpolymorphicな使い方を想定しているとして。 以下public指定なものだけを書く。 class 〜〜{ 1.コンストラクタをずらずらと。 2.virtual デストラクタ。 3.swap()メンバ関数 4.これら以外の普通のdo_something()メンバ関数をずらずらと。 5.operator= 6.operator+ 7.以下必要ならoperator云々 }; ってな感じにすれば良い? 今ひとつ経験不足でどんな感じが良いのかわからんのだ。
- 569 名前:568 mailto:sage [2009/04/12(日) 16:36:50 ]
- >基底クラスでpolymorphicな使い方
ってまあ要するに基底クラスのポインタに派生クラスのポインタを変換して使うつもりって言いたい。
- 570 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:37:32 ]
- まぁ、多重ループから一撃で抜けるなら
その部分をカプソー化してれつるんで抜ける方が スマートな気もするよね。
- 571 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:38:34 ]
- >>570
れつるん って南蛇井?
- 572 名前:571 mailto:sage [2009/04/12(日) 16:39:47 ]
- >>570
ああreturnか。
- 573 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:41:17 ]
- >>566
下手するとgotoなんかよりずっとスパゲッティーになるな フラグ変数が2つ出てきたり、状態が3つとかあったりすると死ねる
- 574 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:44:14 ]
- >>573
やっぱ2重程度ならともかくそれ以上多重にネストしているあたりから おかしくなり始めていると考えた方が良いのかなぁ。
- 575 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:26:39 ]
- フラグって一切使っちゃダメなん?
一切使うな的なことを初めのころ本で呼んで、 それ以来、可能な限り使わない方法を考えてる。 フラグを使わない方法を考えるだけで1日潰すなんてザラ。 でも、実際仕事を始めたら、普通にみんな使ってるし、 大体、DB自体がフラグのカラムでいっぱいだし、 そうなるとコード側でもフラグを操作しないとダメになる。 何が言いたいかっつーと、 フラグを使いまくってる職場のプログラム設計がおかしいのか、 フラグ排除主義の過激派が悪いのか、真理を教えてくれ
- 576 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:36:26 ]
- 別に、そう深刻に考える問題でもないと思うけど。
>>567は逆に考えれば、明快な名前を持つフラグ変数ならマシってことでもある。
- 577 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:07:24 ]
- フラグや多重ループはベタなコードを一度書いてみてジックリ考察すれば
単純なクラス構造に落とせると思うっス 使い捨てクラスが増殖するけど 後の状態変数の把握のし易さは別次元。
- 578 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:53:11 ]
- まぁ、アジャイル・プラクティスの教えに従えば、何事もバランスが大事。
そして、ダメだとわかったときにはリファクタリングする勇気。 でも、できればフラグやgotoは減らしていきたい。
- 579 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:58:37 ]
- gotoなんか使ってる奴はダメだね
男ならsetjmp/longjmpだろ と行きたいところだがある意味>>565で既出だった
- 580 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:02:40 ]
- 恩師、goto熊男先生いわく、
「ノォ!」 なので、gotoは使っちゃいけないと思うな。 (おっさん限定ネタ)
- 581 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:07:05 ]
- BreakTwoLevelsException
- 582 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:10:20 ]
- いや、最初の論点は
「goto使用を避けるためにフラグを使う」というのが最悪、ってことだろ。 もちろんフラグなんて可能な限り使わないほうが良いが、避けられないケースはある。 また、よく言われるループ内のswitchからの脱出の話題で 「switch使うな、classにしろ」という論も 猫も杓子もそうしろと言い出すのはナンセンスとしか言い様が無い。 「return使え」も同様。 要は、臨機応変に適材適所で手元にある道具を使え、ってことだ。
- 583 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:20:54 ]
- 内部ループ部分の関数括りだしや、contiue を活用すれば、二重以上のループは
殆ど登場しないから、個人的には goto は要らないな。 STL やファンクタも併用すれば、ループそのものの登場機会が減るし。
- 584 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:22:10 ]
- このスレって荒れないね。
すばらしい。 理性的な人がそろっているな。
- 585 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:33:13 ]
- C++は、使う人が理性的でないと、大変なことになるからかもね
- 586 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:35:43 ]
- でも、スコットメイヤーもハーブサッターも
著書の中で毒舌はきまくりだよ。
- 587 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:45:51 ]
- >>581
BreakがTwoLevelsかどうかはcatch節によるんで、その名前はあんまりです。
- 588 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 23:09:04 ]
- C++で正常系なのに例外を使うなんて信じられないっす
- 589 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 23:12:42 ]
- 局地的な使い捨てフラグの禁止は古い最適化思想の名残のような感じがするけどなぁ。
大局的にはフラグ専用の変数を用意してあちこちで状態を変更しまくってると ・フラグの状態を変更すべき処理を追加・変更したのにフラグの変更処理を忘れる ・フラグの今の状態がどこで変更された結果なのかがわからなくて状態の信頼性に欠ける とかの問題がでやすくなるから気をつけろってことだろ。
- 590 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 23:21:33 ]
- みんなそういう意味で言ってたと思うよ。
- 591 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 23:31:53 ]
- ユーザ定義リテラル使って、
throw "hoge_loop"_break; とか。
- 592 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 23:51:00 ]
- ある自作関数が1行で終わるとても短いstatic関数だったので、
それを実装ごと丸々ヘッダhoge.hに書きました。 特にinline指定はしなかったのですが、 そのhoge.hをインクルードするソースファイル.cppが複数あるにもかかわらず g++で問題無くコンパイル・リンク・実行できました。 普通の関数だったらmultiple definitionとか言われるはずだと思うのですが、 static関数なら大丈夫だったりするのでしょうか?
- 593 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:04:18 ]
- はい。ただし無駄です。
- 594 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 01:33:22 ]
- >>584
そう言われると、なんだか最近まったり進行している気がしてくる。
- 595 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 02:47:58 ]
- >>592
(メンバ関数でない)static関数とはまさにそういうものだろ。
- 596 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 05:50:11 ]
- >>586
毒舌っていうのは理性と知性によって導き出されるものだよ。 馬鹿な人間が感情のままに吐くのは、面白味も攻撃力も無い単なる罵倒。
- 597 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 15:16:18 ]
- >>596
まぁ、すてきな毒舌なこと。
- 598 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 15:51:35 ]
- >>596
>馬鹿な人間が 自虐?
- 599 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:04:21 ]
- ごめん、何に噛み付いてるのかよくわからない。
メイヤーズやサッターが理性的でないと言いたいのか、 それとも「毒舌というのが知性や理性の欠如から出るものなんだ」と主張したいのか、 それとも普段の自分が否定されたみたいで悔しいのか。
- 600 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:19:14 ]
- ごめん、何を必死に弁解してるかわからない。
いや、マジで
- 601 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:23:39 ]
- >>599
かみつくという認識もないくらい、ただの脊髄反射煽りだから気にすんな。
- 602 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:24:42 ]
- >>601
そうやって煽り返すから荒れるんだよ もう少し自重しようよ
- 603 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 17:02:39 ]
- >599はどのレスの人間で、どのレスに噛み付かれたのかと思ったんだ?
- 604 名前:デフォルトの名無しさん [2009/04/13(月) 17:21:35 ]
- メイヤーズやサッターが知性も理性の欠片もない。
面白味も攻撃力も無い単なる罵倒。
- 605 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 17:40:10 ]
- わどらー
- 606 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:21:38 ]
- プログラム中でint型の変数を2種類(a,bとする)定義し、その2つによって複
素数の型の要素を持つa列b行の2次元配列を定義したいのですが、 ------ #include <iostream> #include <complex> using namespace std; void main(){ int a,b; complex<double> c[][]; cin >> a; cin >> b; complex<double> *c = new int[a][b]; ------ これでエラーが多発してしまいます。 配列の定義に問題があれば教えていただけないでしょうか。
- 607 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:25:00 ]
- std::vector<std::vector<std::complex<double> > > c(a, std::vector<std::complex<double> >(d));
- 608 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:27:27 ]
- >complex<double> *c = new int[a][b];
型が違うからね。 >>607 の方法が一番素直なやり方と思う。
- 609 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:28:31 ]
- ×(d)
○(b)
- 610 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:29:35 ]
- std::vectorならresize()メソッドが使えるから後から大きさを変更する事もできる
アクセスは c[1][2] のように書ける
- 611 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:51:41 ]
- Boostを使ってもいいなら、boost::multi_arrayを検討してみるのもいい。
- 612 名前:デフォルトの名無しさん [2009/04/13(月) 22:26:09 ]
- file 1
template<class T> class Parent { void Umu() { Child* p = new Child; p->Method() } }; file 2 template< class T > class Child { void Umaseru() { m_pParent->Umu(); } } テンプレの場合、実装部分をcppに退避する事ができないので、 上記のような相互参照するクラスのテンプレートって実装できないのでしょうか?
- 613 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 22:29:15 ]
- 先行宣言すればいいよ
- 614 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 22:46:20 ]
- 先行宣言しても、そのクラスのメンバ呼出ししてたらコンパイルできない気がする。
- 615 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 23:03:59 ]
- 基底クラス内にあるクラスは派生クラスで特殊化可能ですか?
- 616 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 07:26:03 ]
- a Gr bner basis
- 617 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 09:59:34 ]
- template<class T> class Parent {
void Umu(); }; template< class T > class Child { void Umaseru() { m_pParent->Umu(); } } template<class T> void Parent::Umu() { Child<T>* p = new Child<T>; p->Method() }
- 618 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 06:30:03 ]
- 質問です。お時間あればよろしくお願いします。
-------------------------------- class Base { // 省略 virtual size_t getSize() const { return sizeof(*this); } }; class Derived : public Base { // 省略 }; int main() { Derived d; d.getSize(); -------------------------------- d.getSize()の値がBaseなのですが、自分が期待していたのはDerivedのサイズの取得です。 DerivedではgetSize()を定義せず、 Derivedのサイズを返すメンバ関数をBaseで定義することはできるでしょうか? 何か良い方法があれば教えていただきたいです。
- 619 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 06:57:06 ]
- >>618
もし、Derivedにprivateなメンバ関数を追加することが許されるのであれば、 BaseとDerivedに、それぞれsizeof(Base)とsizeof(Derived)を返すprivateでvirtualなメンバ関数を追加する。 で、Base::getSize() からはそれを呼び出すようにする。 原則としてsizeofの値はコンパイル時に決まるのであり、実行時の型で決まるものではないことに注意。 (C99の可変長配列は例外となる。)
- 620 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 08:53:01 ]
- >>619
早速の返答ありがとうございます。 なるほどサイズは動的に決まるわけではないんですね。 そもそもこんな事をしたくなる設計がよくないんでしょうかね…
- 621 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:19:50 ]
- ifstreamでバイナリファイルを読み込んでいます。
現在の読み込み位置のアドレスを知る方法はないのでしょうか? operator>>で読み込むたびにカウントするしかないのでしょうか?
- 622 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 11:18:42 ]
- >>621
tellg()
- 623 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 12:05:18 ]
- ファイルサイズはseek+tellで得るのが定石だった頃が俺にもありました
- 624 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 13:02:25 ]
- >>620
もしよければ、なんでサイズを取得する必要があるのかを教えてくれないか。 今までそういう場面に遭遇したことがない。 インスタンスの正体を調べたいなら、getClassのインプリメントなりdynamic_caseで済むと思うが・・・
- 625 名前:592 mailto:sage [2009/04/16(木) 13:48:03 ]
- >>593
>>595 ありがとうございます。 どうやら私のstatic関数への理解がおかしいみたいなので、 勉強してきます。 なんか同じstaticという予約語を使っていながら、 使い方しだいでだいぶ意味が違う気がするんですが・・・。
- 626 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 17:28:05 ]
- >>625
> なんか同じstaticという予約語を使っていながら、 > 使い方しだいでだいぶ意味が違う気がするんですが・・・。 いかにもそのとおり。 それが嫌なので、C++ではグローバルでstaticなものを宣言する代わりに、無名名前空間が推奨されている。
- 627 名前:621 mailto:sage [2009/04/16(木) 19:05:12 ]
- >>622
ありがとうございます おかげさまで tellg, tellp, seekp, seekg 等を知ることができ 無事プログラムを動かすことができました
- 628 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 21:08:54 ]
- C++のifstreamではtellp==tellg、seekp==seekgなんだよな
stringstreramではtellp!=tellg、seekp!=seekgなのに この事に気づくのに手間取ってしまった
- 629 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 22:30:06 ]
- ifstreamにtellp、seekpは無いっしょ
- 630 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 22:40:31 ]
- >>629
ある 普通に使える が、tellpはtellgと同じ意味になるし、seekpはseekgと同じ意味になる やってみそ
- 631 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 22:44:14 ]
- たしかfstreamでもpとgのシーク位置は連動するはず。
- 632 名前:629 mailto:sage [2009/04/16(木) 22:53:10 ]
- >>630
fstreamにはpとg両方あるけど、ifstreamにはgしかなくね?
- 633 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 22:58:26 ]
- >>632
悪い fstreamでなくてifstreamだったか 酔ってるスマソ
- 634 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:17:13 ]
- Windows XPのコマンドプロンプト画面から
g++ hoge.cpp piyo.cpp みたいな感じで使えて、 標準準拠性も良くて、無料な コンパイラ(リンカ付き)ってありませんか? g++を使っていて、エラーメッセージがイミフな時に別のコンパイラで試すのに使いたいんです。 VC++だとコマンドから使えないですよね?
- 635 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:18:42 ]
- つかえますよ。
- 636 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:22:43 ]
- >>635
まぢすか。 VC++が使えれば文句ありません。 もう一度調べ直してきます。
- 637 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 05:27:19 ]
- windowsで無料で使えて新しめってg++とcl位?
- 638 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 06:39:15 ]
- ちょっとスレ違いになってしまうかもしれないんですが、
巷で言われているメモリプール化というのをしようとしてるんですけど 概念として教えてもらいたいものがあります。 ヒープ領域とは全体の確保されたメモリ チャンク領域とはこれから使う為にヒープ領域から必要なだけ小出しに取ってきたメモリ って感じでいいんでしょうか? プールとは?チャンクと同じような概念でよろしいでしょうか?
- 639 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 07:06:21 ]
- ヒープ領域 newでシステムから借りてきたメモリ領域。
プール=確保したもの、プール金とかのプールと意味は同じ。予めシステムから借りておく。 お金が必要なたびにいちいちATMに逝くのではなく、必要になる前に家に現金を置いておくイメージ。 チャンク=こまぎれ。 数バイト毎とかでチマチマ確保すると効率が悪いので、大きな単位で確保する。 必要な額だけをATMからおろすのではなく、必要な額を10万円単位で切り上げておろす、みたいなイメージ。 1万円必要になったら10万円おろし、 11万必要になったら20万円おろす。
- 640 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 08:00:39 ]
- その手の比喩は、7-8割理解できている人間に「トドメの刺す」のには有効だけど、
初期に読まされると余計混乱すると思うよ。
- 641 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 08:03:11 ]
- ×トドメの ○トドメを
>>638 「Effective C++」に確か、実例つきで説明があったはずだから、 それを読んでみるといいんじゃないかな。
- 642 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:10:02 ]
- 〜_tはtypedefの証というけど、
これは規約上予約されている? 例えば自分で numeric_t とかしちゃだめ?
- 643 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:33:18 ]
- 全然。いくら使っても大丈夫。_tamuraとか__tamuraとかも衝突しない限り使って大丈夫。
- 644 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:52:01 ]
- >>643
ありがとう。 MY__M__A__C__R__O とか予約されてるじゃん。これと同じ感じで予約されてたらやだなと思ったのだ。
- 645 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 12:03:25 ]
- > MY__M__A__C__R__O
なんだ俺の知らない世界の話か Cのプリプロに名前を教え込むのは極力避けたい
- 646 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 12:50:47 ]
- >>643
_tamura はグローバルでは予約されてるから使えない。 __tamura はどこでも予約されてるから使えない。
- 647 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 12:53:10 ]
- // main.cxx
namespace { typedef int _INT; } int main() {} std::でもグローバルでもないならおk?
- 648 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 12:58:46 ]
- >>647
_INT みたいにアンダースコア〜英大文字で始まる名前は ダブルアンダースコアを含む名前と同じくどこでも予約。ダメ。
- 649 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 13:04:41 ]
- >>645
_が二連続した名前は予約済みなんだよ。
- 650 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 13:04:42 ]
- s/_INT/_iNT/
# おk?
- 651 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 13:07:51 ]
-
ttp://msdn.microsoft.com/ja-jp/library/cc440188(VS.71).aspx ここの 予約名の形式 ってところに書いてあるね。
- 652 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 13:12:26 ]
- どこの独自コンパイラだよ^^
_hoge も __fuga もうちのコンパイラは全然大丈夫だよ。
|

|