1 名前:デフォルトの名無しさん [2010/05/28(金) 11:49:47 ] 過去スレ Part 8 pc12.2ch.net/test/read.cgi/tech/1251446016/ part 7 pc12.2ch.net/test/read.cgi/tech/1232367742/ part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/ part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
757 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:45:17.23 ] boost.spirit.qiでセマンティックアクションから、 一致したruleのrangeを示すiteratorが欲しいのですがclassicを使うしか方法はないのでしょうか? 例えば、以下の様にしたいです。 void action(Iter first, Iter last){ ... } //... (char_('(') >> *char_('0') >> char_(')'))[action];
758 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:48:13.14 ] ptreeはutf8一択と心に決めて使うものだし
759 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 13:15:59.82 ] tupleってfusionよりメリットある部分あるの?
760 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 15:08:01.25 ] 機能が少ない分全貌を把握しやすくてとっつきやすい。 TMPに馴染みのない人がfusionの説明見たら引くでしょ。
761 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 20:56:08.16 ] そしてtupleのソースコードを読んで引く
762 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 20:58:58.39 ] 俺なんかanyですらやや引きだぜ
763 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 21:23:12.42 ] any使えて嬉しいことって人生で一度でもあればいいほうだよね
764 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 21:25:13.00 ] >>753 オレオレ言語作るときに使えないか期待している。 しかし、まだ俺にそのスキルはない。。。
765 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:43:23.40 ] ヘッダをプリコンパイルヘッダーに突っ込んでも遅い。 みんなどうやってんの?
766 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:45:44.67 ] PCを買い替える
767 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:49:14.99 ] それどころかヘッダファイルをRAMDISK上に置いても遅い 極限までOCするとちょっと速くなる 結局並列ビルドが効く様な構成にしてその上でクロック周波数を極限まで上げるしかない 後はメモリアクセス速度とCPUのキャッシュ容量も効いてくるかもな
768 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 02:26:15.97 ] boostのヘッダー1個、boostを使うソース1個でも十分遅いからな。
769 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 08:09:02.14 ] 64bitにする
770 名前:デフォルトの名無しさん [2011/11/28(月) 09:48:46.81 ] 多倍長整数型の一桁ずつをint型の配列に入れるために、 多倍長整数型をまずstringに代入し、一桁ずつの分割をして、それをboostでint型に変換してみようとしています。 つまり、charを使わないで 多倍長整数→string→string一桁ずつ→int の変換をしたいのです。 お尋ねしたいのが、string→string一桁ずつの変換をどのように行ったらいいのかということなんです。 もしわかる方がいらっしゃるなら教えていただけると嬉しいです。
771 名前:770 mailto:sage [2011/11/28(月) 09:55:53.46 ] >>770 に補足で、言語はc++です。
772 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 10:14:46.90 ] 基数のべき乗で割ったあまり使えば?
773 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 10:16:56.88 ] >>772 言われてみればそうやれば簡単にできそうですね
774 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 03:44:49.48 ] OpenMPのような並列ライブラリってありますかね? 素直にboost::threadですかね・・・ boost Proの全自動インストーラーのほうが便利ですね 入れるなら
775 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 21:24:52.86 ] boost.fusionあたり使ってstd::vectorだろうが構造体だろうが かたっぱしからオブジェクトのメンバーをprintしてくれる debug関数みたいなのないですか
776 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:04:42.91 ] grep のことかな
777 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 18:27:57.73 ] デバッガでウオッチすればいい
778 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 19:10:34.41 ] シリアリズしてstd::cout
779 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 01:45:36.46 ] シリアライズのコードぱくれば作れそうだな
780 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 12:42:57.64 ] boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1)); boost::this_thread::sleep(boost::posix_time::milliseconds(1)); ↑ふたつって、意味は同じ? それとも、下側のソースは、基準になる現在時刻がないから、最低の時間(オーバヘッド)のsleepになる? どういうルールでどのテンプレートが利用されるのかが理解できないです。 よろしくおねがいします。 …boostスレに書いたほうがいいです?(過疎ってるみたいなのでこちらに書いてみました。) >【初心者歓迎】C/C++室 Ver.76【環境依存OK >>836 @ 2011/11/30(水) 10:57:59.02 でも同じ質問を書きましたのでマルチです。1week経ったので引っ越しました。
781 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:53:52.11 ] boostのメルセンヌ・ツイスタを自作のアプリケーションに使用した場合にも 「著作権表示、ライセンス条文、無保証の旨」を書かないと駄目なんでしょうか? それとメルセンヌ・ツイスタに限らずboostを利用する際にライセンスに関わる注意点はありますか?
782 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:34:29.67 ] >>781 random/mersenne_twister.hpp を見るとライセンスがwww.boost.org/LICENSE_1_0.txt であるとわかる。 バイナリ配布にあたってはライセンス同梱は必要ないようだが、 mersenne_twister.hpp込みでソースを配布するならライセンス表示、同梱は必要だろう。 これはboost全体に言える。
783 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:44:24.56 ] >>782 ありがとうございます ヘッダを見ればよかったんですね
784 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 20:15:47.01 ] >>780 > boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1)); > boost::this_thread::sleep(boost::posix_time::milliseconds(1)); > ↑ふたつって、意味は同じ? 意味は違うがよっぽど変な状況でないかぎり結果は同じ。 this_thread::sleepには指定した日時まで待機するのと指定した期間の間待機するのと二種類ある。 上側は指定した日時(たとえば01時23分45秒まで。上の例だと現在時刻の1ミリ秒後)まで待機するもので 下側は指定した期間(たとえば1秒間。上の例だと1ミリ秒間)待機するもの。 どっちになるかは引数の型で決まる。
785 名前:デフォルトの名無しさん [2011/12/15(木) 07:47:16.25 ] Boost.Regex って、UTF8 テキストに対して使えますか? 例えば、"." を検索すると”あ”等のマルチバイト文字にマッチするのでしょうか?
786 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 07:48:07.75 ] 使えない
787 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 12:25:20.07 ] ダメじゃん
788 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 13:51:07.46 ] 馬鹿には無理
789 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 06:51:38.22 ] Boost.Anyなんて使うならLuaを組み込んだほうがまし
790 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:53:05.45 ] variantやanyを使って実行速度遅くするなら 工夫してunion使った方がマシな気がする 実行速度を落さないunionの拡張はboostにないのだろうか
791 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 08:49:08.27 ] >>790 素の union で何が不満なの?
792 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 10:41:49.00 ] unrestricted union使うぐらいならvariantでいいや
793 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:59:33.58 ] boost::array<int,5> arr = { {1,2,3,4,5} }; arrayで要素数を省略した初期化って現状不可能ですか?
794 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:48:55.48 ] 微妙に意味がわからないがテンプレートをインスタンス化するときの<int,5>の5の省略は不可能(おそらくずっと)
795 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:12:16.28 ] 要素数の後決めしたいとか、array使う意味が皆無になるんだが。
796 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:51:36.87 ] やっぱり不可能ですか、、、 後決めしたいというより、ただただ書くのを省略したいだけなんですがね。。。
797 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:16:16.71 ] >>796 #include <iostream> #include <boost/array.hpp> #define ARY(t, n, ...) \ static const t n ## _[] = {__VA_ARGS__}; \ boost::array<t, sizeof (n ## _) / sizeof (n ## _[0])> n = {{__VA_ARGS__}} int main() { ARY(int, arr, 1, 2, 3, 4, 5); std::cout << arr[2] << std::endl; return 0; } 省略できてもあまり嬉しくなかった。
798 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:45:18.04 ] int a[] = {1, 2}; のような事をしたかったってことなんだろうね
799 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:56:46.18 ] まさにそれをしたかった。なぜそうしなかったかというと、境界チェック付きの 配列を使いたかったから。
800 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:55:20.06 ] 別スレで同じこといってるやつみたけど 結局boost使うことにしたのかな
801 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:54:36.97 ] ublasってopencvより遅い気がするのだけど気のせい? ublasの方が速い場合ってエクスプレッショナルテンプレートが効く場合だけ? gccのコンパイルオプションで同じぐらいの速度にならないものだろうか
802 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 14:50:46.10 ] >>797 どうでもいいがプリプロセッサの 可変長引数でコンパイルエラー 世の中C99対応のコンパイラばかりではない
803 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 14:54:39.38 ] >>801 分岐の少ない問題でOpenCVがublasごときに負けたら OpenCVの存在意義が無くなると思うが? OpenCVはGPUを使って数百の並列実行してるんだからな。
804 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:00:18.40 ] lexical_cast ってスレッドセーフ?
805 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 20:45:04.63 ] corutineはそろそろ正式リリースしてくれないものか
806 名前:progress_display mailto:sage [2012/01/08(日) 15:36:56.20 ] 明けましておめでとうございます。 挨拶が遅くなり申し訳ありませんが、今年も何卒宜しくお願いいたします。
807 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 13:20:18.76 ] >>806 開けましておめでとうございます。 ところで、後でちょっとお話がありますので、 会議室を1時間くらい予約しておいてください よろしく
808 名前:progress_display mailto:sage [2012/01/09(月) 14:36:31.42 ] >>807 やだ課長、1時間は短いですよぉ
809 名前:Regex mailto:sage [2012/01/09(月) 17:52:20.64 ] >>808 打ち合わせどうだった? 何言われたの??
810 名前:boost::tuple mailto:sage [2012/01/09(月) 20:23:36.80 ] さてと、C++11への引っ越しを始めるとするか・・・。
811 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:26:00.89 ] corutineがいろいろ改変されたのあって どれが一番いいのかわからない x86 amd64 のwindows linux mac で動けばいいのだけど
812 名前:progress_display mailto:sage [2012/01/13(金) 23:37:40.00 ] @typeに登録しておこう(´;ω;`)
813 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 23:51:00.44 ] shared_ptrってスレッドオフしてallocate_sharedすればintrusive_ptrとパフォーマンスたいして変わらんっすよね?
814 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 05:42:46.00 ] shared_ptrのサイズはポインタ二つ分。 共有管理オブジェクトにはweak_ptr用のカウンタもある。 大した違いかどうかは場合による。
815 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 09:35:55.06 ] メモリ intrusive_ptr 生成破棄 intrusive_ptr 参照カウント増減 shared_ptr
816 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:11:46.99 ] ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html 自分で定義した(例えば多倍精度浮動小数点数)型を数学関数内部でも使える様にするにはどうすればいいですか?
817 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:51:54.60 ] ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html やったことはないがその型に対してこれ↑を満たすように必要なものを自分で書けばboost::mathでその型を使えるんだろ
818 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 03:32:32.30 ] void func2( boost::array<int, 3> & c) { c.assign( 0 ); } error: invalid initialization of reference of type ‘boost::array<int, 3ul>&’ from expression of type ‘const boost::array<int, 3ul>’ arrayを参照引数にできないんだっけ?
819 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 07:59:21.04 ] >>818 おまいはエラーメッセージも読めんのか?
820 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 08:58:09.76 ] ああ!constついてました
821 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 05:12:42.79 ] boost::fusion::list a の先頭要素が a.begin() で参照できないのがちょっと気持ち悪い
822 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:49:52.05 ] bjamの利点がわからないのですが、autoconfとかを用いずbjamを利用してるのは何故でしょうか?
823 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 00:18:21.01 ] POCOとほとんど同じ機能持つライブラリ ありませんか?
824 名前:デフォルトの名無しさん mailto:age [2012/02/02(木) 16:01:00.05 ] ubuntuでboost入れたら一瞬でインスコ完了で使えるようになった 一方、Windowsではサイズがでかい上にビルドにかなり時間がかかる。 この差はなんでつか?ちなみにWindowsではVCで使う感じです
825 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 16:32:49.79 ] apt-get とかでパッケージをインストールしたんのなら、既にバイナリが含まれてるからだろ。
826 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:06:15.79 ] なるへそ Windowsでは全部落としてきて自分でビルドしたからか
827 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 01:20:40.57 ] >>823 なんでpoco不可?
828 名前:デフォルトの名無しさん mailto:age [2012/02/03(金) 08:07:34.00 ] ポコチン
829 名前:デフォルトの名無しさん mailto:age [2012/02/05(日) 22:05:47.61 ] ちんぽこ
830 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:10:55.09 ] ちんぽこ商用ライセンスだと制限きついしなぁ
831 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:01:35.59 ] VC2010 Essentialsを使っています。 boost::serializationを使うと、アプリケーションを作成するためのプロジェクトでも .libと.expを作ってくれるようになるのですが、これを抑制する方法はないでしょうか?
832 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:02:11.18 ] ちんぼ
833 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 01:54:03.78 ] っぽ
834 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 02:07:40.85 ] ぬるぽ
835 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 12:57:55.72 ] >>831 前に別のライブラリで同じ症状に遭ったことがあるけど、解決策見つからず 本当にどうしても嫌なら、ビルド後のプロセスでdelするとか・・・
836 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 15:29:48.48 ] libが生成されるってことはエクスポートテーブルもできてるんだから ファイルを消せばいいってもんじゃないだろ どこかで間違えて__delcspec(dllexport)が定義されてるんだろうね
837 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:34:24.22 ] serializationがらみで ttp://codepad.org/bp6RCbxw boost::shared_ptrのシリアライズコードを改造して、std::shared_ptr用の物を書いたのですが、 コレにカスタムデリータのサポートを追加するいいアイデア無いでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 22:45:06.20 ] poco高すぎだろ pro買わないとネットワーク系全滅だし
839 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 12:34:22.38 ] >>824 linuxでC++やるときってエディタ何使うんですか emacsのタグジャンプの設定で苦労した覚えが 今はもっといいのあるんだろうか
840 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 17:27:39.08 ] 現在Boostのthreadを使って、ワークパイルを管理するクラス、各スレッドに付随するクラス(ワーカーとします)を作っています。 ワーカーは仕事を一通り終えた後、管理クラスが終了許可を出すまで「待ち」を行うようにするため、mutexとconditionを用いています。 管理クラスが終了許可を出せば「待ち」が解除されてスレッドとして動作していた関数を完了するのですが、待ちが解除されるときにmutexにロックがかけられてしまいます(それより前でmutexにロックはかけていない)。 そのため、ワーカーが破棄されるときにmutexでunlock()関数を使わないとエラーが生じます。 ワーカーで行いたいことは通知が来るまで待つだけで、排他制御の必要はありませんが、わざわざunlock()を使わなければならないのでしょうか。 イメージ的にはconditionにmutexを渡さないwait()があれば期待通りになりそうなのですが、それは存在しません。 よろしくお願いします。また私の解釈に間違いがあれば指摘いただけると幸いです。
841 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 16:10:52.17 ] 待つだけでいいならミューテックスでもいいのでは…そういう話ではない…? #include <iostream> #include <boost/thread.hpp> #include <unistd.h> void f( boost::mutex* guard ) { std::cout << "worker: working" << std::endl; std::cout << "worker: waiting until the mutex was unlocked" << std::endl; guard->lock(); std::cout << "worker: finished" << std::endl; guard->unlock(); } int main() { boost::mutex m; std::cout << "main: lock a mutex" << std::endl; m.lock(); std::cout << "main: create a worker" << std::endl; boost::thread worker(&f,&m); std::cout << "main: sleeping 3 seconds" << std::endl; sleep(3); std::cout << "main: unlock the mutex" << std::endl; m.unlock(); std::cout << "main: waiting for join" << std::endl; worker.join(); std::cout << "main: finished" << std::endl; return 0; } $ ./sample main: lock a mutex main: create a worker main: sleeping 3 seconds worker: working worker: waiting until the mutex was unlocked main: unlock the mutex main: waiting for join worker: finished main: finished
842 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 17:00:53.33 ] >>841 返信ありがとうございます。 管理側は仕事追加・終了許可時に、ワーカーのインスタンスそれぞれのメンバー変数であるconditionでnotifyすることで待ちを解除させています。 ワーカーは、管理側が仕事を追加すると通知を受けて仕事を開始するためにwhileループ内で待ちを行っています。(終了許可待ちと仕事待ちは共通のconditionとmutex) void Worker::run() { while (true) { TaskData* task = NULL; while (_taskBag->getTasks(&task)) { job(task); } if (_finishable && _taskBag->numTasks() == 0) { _mtx.unlock(); break; } _cond.wait(_mtx); } } ワーカーが複数いるので、mutexロック解除で待ち解除の通知を行うと、「仕事追加→いずれかのワーカーが仕事に着手」の後にmutexの所有権が管理側に戻ってこないかもしれないので難しそうです。 まぁ実装の仕方次第でmutexだけでもいけそうですが。 あとよくよく考えると_cond.wait(_mtx)の時に暗黙的に_cond.wait(mutex::scoped_lock(_mtx))のようになっているんでしょうか。 となると、ロックがwait解除後に再度かけられてしまうのはある意味当たり前ですね。 申し訳ありません。簡潔な文章で伝えるのがもの凄く難しいですねw
843 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 07:46:49.88 ] waitにはmutexをロック済みのunique_lock渡す必要がある。直接mutexをwaitの渡せているのはたぶんVCのせい。 unique_lockのローカル変数を作ればunlockを呼び出す必要は無い。 condition_variableは他の変数と一緒に使うことが前提。 waitはnotifyの通知以外でも誤って解除されるのでbool変数などと合わせて使わないとだめ。 bool変数で確認するからにはmutexでの排他制御が必要。
844 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 09:57:29.58 ] >>843 ありがとうございます。 排他制御が要らなく見えていたので、待ちの実現だけにcondition、mutex両方を使うことに冗長さを感じていたのですが、conditionはそもそも単体では使わないものなんですね。 ちなみに_cond.wait(_mtx)の記述はXcode4.2でもできています。C++の引数1つの場合の暗黙的なコンストラクターですね。 こういう場合に暗黙的にできてしまうと見落としてしまう場合があって危険だと感じます。
845 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 11:57:41.20 ] >>844 それじゃあboostのバージョンが低いだけじゃないの?一時変数は非const参照に拘束できない。
846 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:45:57.66 ] >>845 Boost 1.48です。ちなみに上記の_mtxはワーカークラスのメンバー変数です。
847 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:55:58.52 ] >>846 そうか。あとはコードを実際に追わないと分からないわ。
848 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 07:34:07.70 ] boost::asioの非同期通信でhttpクライアントつくろうと思ってasync_read_someでデータ取ってるんだけど、何故か5kbくらいでデータが途中で切れちゃうんだ 誰かピンとくる人居ないか…助けてくれ
849 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 01:04:19.29 ] >>848 async_read_until使えば?
850 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:40:45.11 ] 今作成中のプログラムに<boost/thread.hpp>と<boost/thread/condition.hpp>をインクルードすると、システムのlocale_facets.tccとboostのshared_count.hppにおいて大量のエラーが発生します。 これらのファイル自体には問題は無く、何らかの依存関係でエラーが出ているんだろうということは想像がつくのですが、全く原因がわかりません。 何かこのような現象について心当たりのある方は居られないでしょうか。 Xcode4.2で、ヘッダーサーチパスには/opt/local/includeを(boostはこの下にインストール)設定しています。ライブラリーファイルのリンクも行っています。 よろしくお願いします。
851 名前:デフォルトの名無しさん [2012/02/15(水) 19:46:15.26 ] >>850 ですが、自己解決しました。申し訳有りません。 原因はboostを使っているソースファイルとは別のファイル内で定義した「swap」という名称のマクロでした。 それぞれのソースファイルを最終的にmain関数で参照する形となっていたためにboost内の何かとマクロ名が衝突したようです。 自分で定義したswapをユニークな名称に変更することで解決しました。 今後どなたかの参考になれば幸いです。
852 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:49:52.51 ] こらたかし!マクロは全部大文字にって言ったでしょ!
853 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:30:41.91 ] さすがにswapをマクロ名にするのはないな
854 名前:デフォルトの名無しさん [2012/02/15(水) 22:26:50.21 ] cpp側なら問題なかったのですが、実装も含めたヘッダーに書いてしまったのが盲点の原因でした...
855 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:40:49.07 ] 気が、狂っとる
856 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:45:19.13 ] 君は優秀な人材だぜひマイクロソフトに就職しなさい
857 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:53:13.67 ] >cpp側なら問題なかったのですが よくねぇよ。 規格にちゃんと、 「標準ライブラリーのヘッダーをincludeする翻訳単位は、全標準ライブラリーヘッダーで宣言されている名前を#defineもしくは#undefしてはならない。」 と書いてある。 だから、ひとつでもどれか標準ライブラリーのヘッダーをincludeしたならば、swapという名前は#defineも#undefもできない。