1 名前:デフォルトの名無しさん [2007/06/03(日) 22:33:55 ] エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です。 【前スレ】 【初心者歓迎】C/C++室 Ver.37【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1178432985/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
755 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 23:00:50 ] 質問 1. 死ぬまでenumハックを使うべきなのか。 2. 死ぬまでexportは使ってはならないのか。
756 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 23:07:21 ] >>755 1. そうです 2. そうです 早死にしないように気をつけて
757 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 23:10:24 ] 1 VC6を窓から投げ捨てりゃいいんじゃね 2 EDG使ってないコンパイラを窓から投げ捨てりゃいいんじゃね
758 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 23:16:47 ] >>754 www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3014
759 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 23:44:18 ] >738 初期化は実行時に起こる。 テンプレートが使用された時、というのはコンパイル時の話。 件の場合、定数化されてしまうというのを無視すると int i = Array<int, 3>::Length; とすると、Array<int, 3>::Length に相当する定義がコンパイル時に生成される。 で、その生成されたソース中に初期化が存在するから、コンパイルした結果のコードでも 初期化が実行される。タイミングは普通の初期化と一緒で main 到達前。 >2、int i = Color::ColorDimension; > とアクセスしたときは派生元のArrayから初期化が行われることは保証されていますか? 実際には Color::ColorDimension は定数と見なされるので Array と無関係に単なる 3 として評価されると思われ。
760 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 06:38:16 ] いくつかのサイトで見られたのですが、 STARTUPINFO si = {sizeof (STARTUPINFO)}; は何をやっているんでしょうか? STARTUPINFO si = {0}; や、 STARTUPINFO si; memset(&si,0,sizeof (STARTUPINFO); si.cb = sizeof(STARTUPINFO); などなら分かるのですが。
761 名前:760 mailto:sage [2007/06/19(火) 07:24:58 ] あ、すみません。 構造体の第一メンバをsizeof (STARTUPINFO)で、 残りのメンバを0で初期化している事が分かりました。 値を設定してないと0で初期化されるようですが、 STARTUPINFO si = {}; のような使い方では0で初期化される保証はないのでしょうか?
762 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 07:59:43 ] >>760 定義時初期化で済むことを、わざわざバグの混入する可能性のあるmemset()にする理由はなかろう。 また、STARTUPINFOに先頭にサイズを入れておくお約束があるならやはり初期化で入れるのが一番。 >STARTUPINFO si = {}; コンパイル通った?
763 名前:760 mailto:sage [2007/06/19(火) 08:56:24 ] はい。VC2005でコンパイルが通り、結果も0で初期化されてることを確認しました。 コンパイル通らない可能性もあるんですね。それなら使いません。 あと、STARTUPINFO si = {0}; による初期化でも、/NODEFAULTLIBでビルドすると 「error LNK2001: 外部シンボル "_memset" は未解決です。」と出ることがあります。 これはmemset()が使われてるということなんでしょうか?
764 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 08:56:28 ] >>761 全部省略できるのは C++ だけ。
765 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 09:59:42 ] >>763 そうみたいだね。 memset() は標準ライブラリだから、 リンクできることを前提にしてるんだろう。
766 名前:デフォルトの名無しさん [2007/06/19(火) 10:21:17 ] すみません、このスレでいいのか迷うんですが、 Windows2000やXP、Vistaで、アプリからサービスを一時的に停止したり 開始したりする方法を教えて下さい。 宜しくお願いします。
767 名前:760 mailto:sage [2007/06/19(火) 11:07:01 ] >>764 おお、なるほど。C++でした。 >>765 ありがとうございます。 みなさん、どうもありがとうございました。
768 名前:766 mailto:sage [2007/06/19(火) 12:48:11 ] 解決しますた
769 名前:デフォルトの名無しさん [2007/06/19(火) 12:57:26 ] 今現在BMPの画像をexeファイルで表示する方法をやってるのですが よろしければ必要最低限のプログラムのソースを教えていただけませんか? よろしくお願いします。
770 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 13:01:28 ] >>769 >>1 >ただしその場合、質問者は必ず、環境を書きましょう。
771 名前:デフォルトの名無しさん [2007/06/19(火) 13:10:27 ] >>469 とりあえずこれで"今現在BMPの画像"を表示できるプログラムができる #include <stdio.h> int main(){ printf("今現在BMPの画像"); return 0; }
772 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 13:11:07 ] どうせWindowsだろ 猫でも読んどけ
773 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 13:47:09 ] 丸投げは宿題スレ以外はだめ 今どこまで理解しててどこら辺がわからないのか書け
774 名前:デフォルトの名無しさん [2007/06/19(火) 14:38:22 ] >>729 ありがとうございます。 なるほど、そうなってるんですか。。 しかし、以下のソースをコンパイルしようとしたところ、 sub3クラスでの仮想基底クラスのコンストラクタ呼び出し (base(33)の呼び出し)はコンパイルを通すために必須でした。 ということは、 ー仮想基底クラスのコンストラクタは、最派生クラスから引数を指定してやることになっている +仮想基底クラスのコンストラクタは、多重継承になるクラス以降最派生クラスまで、毎クラスで指定することになっている ということなのでしょうか? (有効なのは最派生クラスでの呼び出しだけみたいですが、、、)
775 名前:デフォルトの名無しさん [2007/06/19(火) 14:46:23 ] すいません、ソース貼り忘れた #include <iostream> using namespace std; class base { public: int a; base(int x) { a=x; cout << "x=" << x << endl; } }; class sub1 : virtual public base { public: sub1() : base(0) {} }; class sub2 : virtual public base { public: sub2() : base(0) {} }; class sub3 : public sub1, public sub2 { public: sub3() : base(33) {} }; class sub4 : public sub3 { public: sub4() : base(1) {} }; int main() { sub4 obj; obj.a = 10; return 0; }
776 名前:デフォルトの名無しさん [2007/06/19(火) 14:49:43 ] win32 SDKでwindowsプログラムの勉強をしているのですが、windowsプログラムを作製するにあたり win32 apiとc言語標準ライブラリに同じような関数があった場合、Windowsではapiの方を使ったほうがよいのですか? また、両者の使い分け基準って何かあるのですか? たとえば、CopyMemoryとmemcpyは同じことをする関数なんですけど..どっち使うのべきか
777 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 14:56:41 ] 環境に依存しない部分はなるべく標準ライブラリ使ってるな、俺は。 趣味でやるなら好みでいいんじゃない?
778 名前:デフォルトの名無しさん [2007/06/19(火) 16:30:34 ] try catchでわざと例外を出す方法を教えてください 今は変数を0の入った変数で割って例外を出しています
779 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 16:40:49 ] try catchじゃ例外は出せない
780 名前:デフォルトの名無しさん [2007/06/19(火) 16:42:51 ] tryの中でcatchに飛ばす方法を教えてください
781 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 16:48:03 ] 「C++ 例外」でググれ
782 名前:デフォルトの名無しさん [2007/06/19(火) 17:01:37 ] このソースで LINK : warning LNK4039: /SECTION オプションで指定されたセクション '.share' は存在しません。 がでるんだけど、何が悪いか教えてください。 どうやったらwarning消せますか。ちゃんと.shareが使える形で。 #include <windows.h> #pragma comment(linker, "/section:.share,RWS") #pragma data_seg(".share") HANDLE x = NULL; #pragma data_seg() int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, PSTR szCmdLine, int iCmdShow) { MessageBox(NULL, TEXT("HOGE"), NULL, MB_OK); return TRUE; }
783 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 17:24:35 ] >>782 とりあえずコピペしてビルドしてみたのだがwarningなんかでなかった@vc7.1
784 名前:デフォルトの名無しさん [2007/06/19(火) 17:35:43 ] 捕捉でごめんなさい。 debugだとでなくて、releaseだとでるみたい。
785 名前:783 mailto:sage [2007/06/19(火) 18:05:35 ] releaseでもでなかった printfでx見たいからコンソールにした 複数プロセス起動させるとxの値が増加したからshareされてると思う@vc7.1 winxp sp2 #include <stdio.h> #include <windows.h> #pragma comment(linker, "/SECTION:.share,RWS") #pragma data_seg(".share") int x = 1; #pragma data_seg() int main(int ac, char** av) { printf("%d\n", x); x += 1; MessageBox(NULL, TEXT("Press Enter key to continue"), TEXT("TINKO"), MB_OK); return 0; }
786 名前:デフォルトの名無しさん [2007/06/19(火) 18:59:16 ] >>785 まじですか。 こちらの環境はVS2005のExpress。 調べたらこんな差がわかった。でも、なんでかは不明。初期化されないからと推測。 コンパイルエラーが出ないソース。 #include <windows.h> #pragma comment(linker, "/section:.share,RWS") #pragma data_seg(".share") int x = 1; #pragma data_seg() int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, PSTR szCmdLine, int iCmdShow) { ++x; MessageBox(NULL, TEXT("HOGE"), NULL, MB_OK); return TRUE; } つづく
787 名前:デフォルトの名無しさん [2007/06/19(火) 19:01:28 ] コンパイルエラーが出るソース。 #include <windows.h> #pragma comment(linker, "/section:.share,RWS") #pragma data_seg(".share") int x = 1; #pragma data_seg() int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, PSTR szCmdLine, int iCmdShow) { MessageBox(NULL, TEXT("HOGE"), NULL, MB_OK); return TRUE; } ++x; がないだけ。 ↑のは ×初期化されない ○一度も利用されることがない かと思っています。
788 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 20:14:08 ] 最適化で消されてるだけじゃないかな /Faで.asm見ればわかるよ
789 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 22:00:05 ] スカトロCGを激しく集めるスレver27 sakura03.bbspink.com/test/read.cgi/ascii2d/1178640935/537 537 名前:名無したん(;´Д`)ハァハァ[sage] 投稿日:2007/06/19(火) 21:47:45 ID:C++ilogK >>528 試 し た の か ? IDがC++
790 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 22:08:56 ] よりにもよってスカかよw
791 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 22:12:52 ] しかも logK か。 何か化学的な雰囲気を感じるぞ。
792 名前:730 mailto:sage [2007/06/19(火) 22:17:42 ] >>759 Color::ColorDimension が定数でなかった場合の動作はどうなりますか? クラスのstaicオブジェクトが初期化される順番は未定義であるように、 初期化順序が未定義なために不定動作となるのか、 派生関係があるので初期化順序をコンパイラが考えてくれるのか、 どちらになるのでしょうか?
793 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:26:19 ] >>792 テンプレート展開はコンパイル時に行われるから、 コンパイル時に判明する定数値しかを与えることができない
794 名前:730 mailto:sage [2007/06/19(火) 23:51:30 ] >>793 ああなるほど、確かにそうですね。これはテンプレートを使わない場合も同じですよね。 コンパイル時に行われるということを考えると文法も分かりますね。 ・OKな例 class Base { public: static const int A; }; class Derived : public Base { public: static const int B; }; const int Base:: A = 1; const int Derived:: B = A; ・ダメな例 class Base { public: static const int A; }; class Derived : public Base { public: static const int B = A; }; const int Base:: A = 1; たしかにwww。ありがとうございました。
795 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:55:57 ] いかん 最近始めたCの勉強をここ一週間ほどさぼってたんだが ここ見てちょっと焦ってきた いかんいかん
796 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 01:49:32 ] 例としてですが、とある値を格納するクラスを作ってます。型はテンプレートで template<typename T> value_t { public: T get() const { return value; } void set(T n) { value = n; } private: T value; }; という感じになると思います。value_t<int> とかなら問題ないと思いますが、 (普通は参照を使って渡す)クラスや構造体が型に指定されると、 無駄にコピーコンストラクタが呼ばれたりすると思うので、微妙な感じになってしまいます。 ということで、最初から参照を使って、 template<typename T> value_t { public: const T & get() const { return value; } void set(const T &n) { value = n; } // ここで operator= が呼ばれるのは問題ないことにする private: T value; }; こう書いても問題ないですか?(というか、こう書くべきですか?)
797 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 02:00:31 ] 問題はないけど、 プリミティブ型だと結構遅くなる。
798 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 02:37:39 ] >>796 boost::call_traitsはどう? もしくは、参照を扱うメソッドと値を扱うメソッドの2パターン作るとか
799 名前:デフォルトの名無しさん [2007/06/20(水) 08:26:49 ] >>783 >>788 ありがとう。「最適化で消された」みたいです。腑に落ちました。
800 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 12:49:37 ] ofstream ofs("a.txt",ios::app); ofs << ((LPCREATESTRUCT)lParam)->lpszClass << ',' << ((LPCREATESTRUCT)lParam)->lpszName << endl; や、 if (!lstrcmp(((LPCREATESTRUCT)lParam)->lpszClass,"ClassName") && !lstrcmp(((LPCREATESTRUCT)lParam)->lpszName,"WindowName")) だとプログラムがクラッシュすることがあります。(lpszClass、lpszNameどちらか一方のみでも) ofs << ((LPCREATESTRUCT)lParam)->hwndParent << endl; や、 if (((LPCREATESTRUCT)lParam)->hwndParent == FindWindow("ClassName","WindowName")) のようにhwndParentならクラッシュしません。これは何が原因でしょうか?
801 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 12:51:30 ] >>800 各変数の値がどうなってるかくらい調べろよ
802 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 12:56:12 ] >>800 とりあえず無節操に行われているこのキャスト (LPCREATESTRUCT)lParam が怪しすぎる。 キャストが安全である根拠はあるか? キャストが安全だとして、有効なポインタが渡されてるという保証はあるのか?
803 名前:800 mailto:sage [2007/06/20(水) 13:04:12 ] >>801 すみません、フックなので変数を予測できず、どの値でクラッシュしてるか分かりません。 >>802 ウィンドウプロシージャのメッセージがWM_CREATEの時に使用してるので大丈夫だと思うのですが。
804 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 13:13:25 ] C++で安全なコードを書きたいなら、キャスト前のチェックとか、 ->の元がNULLでないことを保証するassertなんかは必須かと というか、クラッシュするコードの lpszClassや lpszNameの内容チェックコードを 処理の前に挿入してログにでも吐けばいいんじゃね?
805 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 13:17:03 ] >>803 予測なんてしなくていいから、デバッグ実行しろ。
806 名前:800 mailto:sage [2007/06/20(水) 13:41:47 ] >>804 lstrcmp〜でクラッシュするのでofstream〜で値を確認しようとしたんですが駄目だったんです。 >>805 デバッグしたんですが慣れてないので分からなかったんです、ごめんなさい。
807 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 13:56:34 ] MSDNのCREATESTRUCTに関するヘルプには Because the lpszClass member can contain a pointer to a local (and thus inaccessable) atom, do not obtain the class name by using this member. Use the GetClassName function instead. と書かれているようだが。 lpszClassに直接アクセスしてクラス名を取得しようとするな ってことじゃねえの。
808 名前:800 mailto:sage [2007/06/20(水) 15:24:02 ] >>807 わざわざありがとうございました。
809 名前:デフォルトの名無しさん [2007/06/20(水) 19:21:18 ] class Stone{ public: Stone(); int color, groupNumber; Stone *nextStone, * groupHead, *nextGroup; }; Stone::Stone(){ color = groupNumber = 0; *nextStone, = *groupHead, = *nextGroup = 0; // (1).ここで整数を代入できない } というStoneオブジェクトのインスタンスを21*21の二次元配列として生成して、 Boardオブジェクトを作りたいと考えています。 改行が多いといわれたので続きます
810 名前:809の続き [2007/06/20(水) 19:22:32 ] class Board{ public: Board(); Stone board[21][21]; Stone *boardHead; }; Board::Board{ *boardHead = &board; // (2).Stone(*)型はStone型に変換できない for(int i; i < 20; i++){ int j; for(j; j < 19; j++){ board[i][j].color = 3; board[i][j].(*nextGroup) = board[i][j + 1]; } board[i][j].color = 3; board[i][j].(*nextGroup) = boardboard[i + 1][1}; // (2).と同様 } と表記したところ、(1).(2)のエラーが起きました。 配列の要素一つ一つにポインタを持たせて、グループ化をしたいと思っています。どうすればよいのでしょうか?
811 名前:809、810 [2007/06/20(水) 19:24:44 ] すいません。書き忘れです。 (1)では、ヌルポインターを取り合えず代入したいと思っています。 (2)では、配列番号から、要素のポインターを代入したいと思っています。
812 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 19:29:47 ] (1)のところには、余計なカンマが付いている (2)の最初の箇所は、余計な*が付いている 2つ目の(2)は、board[i][j].nextGroup = &boardboard[i + 1][1];にしろ
813 名前:デフォルトの名無しさん [2007/06/20(水) 19:31:34 ] (1)で*付ける意味も分からんし nextStone = groupHead = nextGroup = 0; とか
814 名前:デフォルトの名無しさん [2007/06/20(水) 19:33:43 ] すみません、質問させてください。 void foo(const char *const& hoge); のような宣言の関数があるのですが、引き数定義部分の「const&」の意味が 分からずに悩んでいます。この宣言はどう解釈すればよいのでしょうか? よろしくお願いします
815 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 19:42:09 ] constな(C++の)参照 宣言自体の読み解き方がわからなければ、ここでも読んでおけ kmaebashi.com/programmer/pointer.html Cだから参照は出てこないが、ポインタの*と同じような要領で解釈しろ
816 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 20:19:12 ] >>812-813 あ、*の扱い方が間違ってたのか。ありがとうございました。
817 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 21:05:47 ] windowsで、C++builder使用してます。 質問です。 Linuxだと、iptablesのテーブルの中身を書き換えて iptablesを再起動すると、設定変更できますよね。 やりたいことは、 ※時間ごとに、アクセスできる人を変更したいんです。 これをwindowsでやりたいんです。 1、ファイアーウォールみたいなのから、自分で作る。 これは難しいでしょうか?パケット見て、捨てたり、捨てなかったり とかのやり方がわからないです。本などご存じないでしょうか。 2、フリーのファイアーウォールソフトを探してきて、 linuxのiptablesと同じように、テーブル書き換え->ソフト再起動 で、できそうでしょうか? 2番目だと簡単そうですか?
818 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 21:56:04 ] ソフト単体ならパケット監視してどうこうということもできるだろうけど、 windowsのばあい、システムに対してユーザーが介入するのは難しい。 アクセスというのは、何に対してのアクセスなんだ? webサーバーとか、ftpサーバーとかだったら、そのサーバーソフトのフィルタリング設定を使うべきだろう。 共有ディレクトリへのアクセスを制限するというなら、また別の方法が必要だろうが。
819 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 22:05:58 ] >>817 ttp://www.wilderssecurity.com/showthread.php?t=112582 でも読んでみたら
820 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 22:29:39 ] >>818 レスありがとうございます。 ふむふむ。windowsだと難しいですか。 自分作ってないソフトで、しかもそのソフトは フィルタリング機能とか無いんです。 >>819 ありがとうございます。 iptablesと似てるのないですか。だけ理解できました。 じっくり、読んでみます。 似たようなのがあれば、やりたいことできそうですね。
821 名前:デフォルトの名無しさん [2007/06/20(水) 22:47:33 ] >>820 そんなあなたにフィルタドライバか、DLLインジェクション。
822 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:07:41 ] なんで具体的にそのソフト名をいわんのかね。
823 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:36:12 ] 改造する気?
824 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:45:03 ] C++でLinkポインタというのを作りました 所有権を持つポインタオブジェクトが自分のコピー?に対する参照リストを持っていて 自分が消滅する時にそれらを一気にぬるぽ値に設定することで コピーは本体の事を意識しなくて済むというメリットがあります 質問はこれと似たような事が出来る既存のライブラリは無いかということです 正直あまり良い実装じゃない上に根本的に泥臭いんですよね…
825 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:53:56 ] Lockできないboost::weak_ptrを実装したって話?
826 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:31:22 ] あのー (unsigned int) ((context->count[0] >> 3) & 0x3F) これがなぜ64のあまりになるのですか?
827 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:33:42 ] >>826 0x3fは2^6-1だから。
828 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:47:40 ] 0x3f=16*3+1*15
829 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:50:06 ] えーとじゃあ 45と120の場合いくらになるんだろ なんか計算あわない
830 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:52:38 ] >>826 一瞬、LISPあたりのコードかと思った。
831 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:53:37 ] ところでなんで (context->count[0] >> 3)してるんだろう。 これすると値辺になる気がするのですが
832 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 13:05:29 ] つーかそれ、 8で割った後に64で割った余りを求めてる事になるが
833 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 13:14:49 ] あっそ、よかったね
834 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 14:30:08 ] よくないという話だな
835 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 14:54:13 ] >>826 10進数で下6桁残して上の桁を0にしたら それは100万 (10^6) で割った余りになる。 それと同じように、0x3F で AND とると (=2進数の下6ビットを残して上のビットをクリア) 64 (2^6) で割った余りになるわさ。
836 名前:ひろみつ [2007/06/21(木) 16:29:58 ] Cって何言語で一版最初書かれたの?今のC言語はCで書かれてるとかいうのはなしね。 K&Rだかなんだかが、一版最初に書いたのは、何で書いたの?アセンブラ?B?
837 名前:デフォルトの名無しさん [2007/06/21(木) 16:33:43 ] ひろみつ死ね
838 名前:デフォルトの名無しさん [2007/06/21(木) 16:50:44 ] すみません。長いソース打ち込みたいとおもって、本屋で長いソースが載っている本を買ってきました。 www.amazon.co.jp/C%E4%BE%BF%E5%88%A9%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E9%9B%86-%E6%9E%97-%E6%AD%A3%E5%B9%B8/dp/4320027108/ref=sr_1_3/250-4187414-6697033?ie=UTF8&s=books&qid=1182412183&sr=1-3 です。 QuickC対応って書いてあるんですが、VC++6.0でも大丈夫ですか?
839 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 17:10:28 ] >>838 QuickC…… その本は今すぐ返品しなさいw ソースが欲しいなら、 sourceforge.jp/ sourceforge.net/ なんかで探しなさい。 もしくはあなたの好きなアプリやライブラリでオープンソースなのを探しなさい。
840 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 17:57:25 ] 94年じゃしょうがないな
841 名前:デフォルトの名無しさん [2007/06/21(木) 18:27:59 ] unsigned conv_in:1; という記述を見かけたのですが このコロンはなんですか?
842 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 18:31:58 ] >>841 ビットフィールド。 変数のサイズを1bitにする指定。 とはいっても、実際に1bitになっているわけじゃないけど。 1bitしか使わない宣言というべきなのかな。
843 名前:838 mailto:sage [2007/06/21(木) 18:33:45 ] >>839 どうもありがとうございました。そんなサイトがあるんですね・・ すごいです。独学者なので、助かります。ありがとうございました。 >>840 やっぱだめですよね。。どうもありがとうございました。
844 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 18:35:49 ] おいおい独学社ならそれくらい嫉妬家よ
845 名前:841 mailto:sage [2007/06/21(木) 18:44:33 ] >>842 ありがとうございます
846 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 18:55:12 ] >>844 今日始めたばかりの独学者なんだろ。事情を察しろ。
847 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 19:06:10 ] そういうところのリンクをまとめて貼ってもいいんだが 見つける喜びってのがあるからなあ
848 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 19:09:04 ] >>847 急に貼られても今日始めたばかりの独学者だから困るだろ。事情を察しろ。
849 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 22:20:52 ] 長いソースを打ち込みたいならCプログラミング診断室 いや本気にしないでね
850 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 22:22:08 ] >>825 おー、weak_ptrで出来るんですね しかもロック付ですか…凄い
851 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 22:45:49 ] OfficeのWORDの文字だけをいじるプログラムを組みたいのです。 ただ、UNIX系を想定しているので、COMを使った方法ではダメなのです。 DCOMを使うのも、避けたいのです。 そこで、WORDのデータ構造を調べてみたのですが、どこにも見当たらないのですが、 UNIX系で操作できるようなライブラリ・もしくはデータ構造がわかるサイトがあれば教えてもらいたいです。 よろしくお願いします、
852 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 22:51:51 ] あ〜残念。データ構造がわかる頭は持っててもサイトは知らないやゴメンね、
853 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 01:10:31 ] あー残念。RTFやOpenOfficeText形式なら知っているけどMSWord形式は知らないや。
854 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 01:17:29 ] POIでいいじゃん。 がんばって移植すれ。
855 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 04:31:38 ] typedef vector<int> V; typedef V::iterator I; typedef vector<V> VV; VV vv; for_each( vv.begin(), vv.end(), tr1::bind( &fill<I,int>, tr1::bind(static_cast<I (V::*)()>(&V::begin), tr1::placeholders::_1), tr1::bind(static_cast<I (V::*)()>(&V::end), tr1::placeholders::_1), 0)); g++ 4.1.2です。 2次配列の初期化をalgorithmの練習でやってみようと思っていろいろ試行錯誤してみたのですが、 こんな悲しいコードになってしまいます。 static_castは省略できても良さそうなものですが、これはg++特有の問題でしょうか? (省略できたとしても普通にループ書いたほうがわかりやすいけど)