2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【初心者歓迎】C/C++室 Ver.15【環境依存OK】

1 :デフォルトの名無しさん:05/03/19 20:26:18
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
http://pc5.2ch.net/test/read.cgi/tech/1108924728/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm



2 :デフォルトの名無しさん:05/03/19 20:29:02
にかな

3 :デフォルトの名無しさん:05/03/19 20:32:02
にかわ

4 :デフォルトの名無しさん:05/03/19 20:32:45
さんかな

5 :デフォルトの名無しさん:05/03/19 20:33:00
さかな

6 :デフォルトの名無しさん:05/03/19 20:33:08
よんかな

7 :デフォルトの名無しさん:05/03/19 20:33:52
よんさま!!!!!!!!!!!!!!!!

8 :デフォルトの名無しさん:05/03/19 20:34:03
ななだ!

9 :デフォルトの名無しさん:05/03/19 20:34:25
ていうか、テンプレまだぁ

10 :デフォルトの名無しさん:05/03/19 20:35:33
テンプラまだー

11 :デフォルトの名無しさん:05/03/19 20:37:24
今揚がりました

12 :デフォルトの名無しさん:05/03/19 20:37:51
テンプレは20レスの間に入れてほしい。でないと、でないと…

13 :デフォルトの名無しさん:05/03/19 20:39:26
∧_∧
( ´・ω・) みなさん、お茶が入りましたよ・・・・。
( つ旦O
と_)_) 旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦

14 :デフォルトの名無しさん:05/03/19 20:43:34
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【歴代スレ】
1:http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
2:http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
3:http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
4:http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
5:http://pc5.2ch.net/test/read.cgi/tech/1077102238/ (dat落ち)
6:http://pc5.2ch.net/test/read.cgi/tech/1082182233/(dat落ち)
7:http://pc5.2ch.net/test/read.cgi/tech/1086373839/(dat落ち)
8:http://pc5.2ch.net/test/read.cgi/tech/1091264964/(dat落ち)
9:http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
10:http://pc5.2ch.net/test/read.cgi/tech/1097416187/
11:http://pc5.2ch.net/test/read.cgi/tech/1099190154/
12:http://pc5.2ch.net/test/read.cgi/tech/1101100031/
13:http://pc5.2ch.net/test/read.cgi/tech/1104843249/
14:http://pc5.2ch.net/test/read.cgi/tech/1108924728/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

15 :デフォルトの名無しさん:05/03/19 20:47:27
【関連スレ(処理系別)】
★初心者にVisual C++を教えるスレ★ Part17
http://pc5.2ch.net/test/read.cgi/tech/1107926989/
■MFC相談室 mfc13d.dll■
http://pc5.2ch.net/test/read.cgi/tech/1110179996/
C++Builder相談室 Part13
http://pc5.2ch.net/test/read.cgi/tech/1108468718/
GCCについて part5
http://pc5.2ch.net/test/read.cgi/tech/1103057320/
cygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/
タダで使えるBorland C++ Part4
http://pc5.2ch.net/test/read.cgi/tech/1091066805/
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/
Turbo C++ 5.0 プログラミング
http://pc5.2ch.net/test/read.cgi/tech/1030878794/

16 :デフォルトの名無しさん:05/03/19 20:51:23
【関連スレ(その他)】
C言語なら俺に聞け! Part 105
http://pc5.2ch.net/test/read.cgi/tech/1111117094/
C++相談室 part39
http://pc5.2ch.net/test/read.cgi/tech/1106527792/
ぼるじょあがC/C++の宿題を片づけますYO! 41代目
http://pc5.2ch.net/test/read.cgi/tech/1109542053/
【C++】template 統合スレ -- Part6
http://pc5.2ch.net/test/read.cgi/tech/1101384692/
C++は難しすぎ 難易度:2
http://pc5.2ch.net/test/read.cgi/tech/1071697977/
C言語の第一歩
http://pc5.2ch.net/test/read.cgi/tech/1031374980/
プリプロセッサについて熱く語るスレ。
http://pc5.2ch.net/test/read.cgi/tech/1058203590/
C統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/
C、C++の最適化について語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1084676298/

17 :デフォルトの名無しさん:05/03/19 21:25:29
当方今Webの参考資料見ながらプログラム書いてるんですけれども。

そのプログラムの中で同じような処理(レジストリからAという値を抜く処理,Bという値を抜く処理等)がいくつか有るので、
同じような分野別にしてファイル分けて改造しやすくしてるんですが。
こうする事でプログラムが重くなるとかって有るんでしょうか?
まとめて一つのテキストの中に処理全て書いた方がいいんでしょうか。

判りづらい文で済みませんが、何方かご教授お願い致します。

18 :デフォルトの名無しさん:05/03/19 21:36:33
> 当方今Webの参考資料見ながらプログラム書いてるんですけれども。
初心者の特徴:なぜか質問をあいまいにする

19 :デフォルトの名無しさん:05/03/19 21:42:33
>>18
その行のどこが質問ですか?

20 :デフォルトの名無しさん:05/03/19 21:51:52
>>17
レジストリから〜っていうのはSHGetValueで十分じゃないか?

21 :デフォルトの名無しさん:05/03/19 21:56:35
モジュール化することを否定してはなりません。

22 :デフォルトの名無しさん:05/03/19 22:31:58
>>19
もう少し読解力を鍛えろ

23 :デフォルトの名無しさん:05/03/19 23:35:23
>>17
まとめると、
・ソースファイルが単数と複数の場合とで、
 プログラムの実行速度は変わるのか?
ということか?
知らん。

24 :デフォルトの名無しさん:05/03/20 00:39:12
>>22
あの行が質問を曖昧にしてるとでも?

25 :デフォルトの名無しさん:05/03/20 01:06:55
つまらないことでスレがのびそうな悪寒・・・

26 :デフォルトの名無しさん:05/03/20 01:28:51
>>24
もう一度言うね
もう少し読解力を鍛えろ

27 :デフォルトの名無しさん:05/03/20 01:52:20
時間がかかりそうだから、何がどのように曖昧にしてるか教えてよ

28 :デフォルトの名無しさん:05/03/20 01:53:22
読解力を鍛えろっていうやつって
そもそも理解してないよな

29 :デフォルトの名無しさん:05/03/20 01:56:19
かわいい^^

30 :デフォルトの名無しさん:05/03/20 02:43:39
コンパイラに任せとけ

31 :デフォルトの名無しさん:05/03/20 02:57:18
>>17
プログラムの実行速度はおそらく殆ど変わらない。
ビルドに要する時間は増加する。
ソースコードのメンテナンスは容易になる。

32 :デフォルトの名無しさん:05/03/20 13:44:22
エクスプローラでコピー、切り取りされたものを別アプリで貼り付けたいんだけど
クリップボードの情報からどうやって判断すればできるのかな?

C++Builderでのサンプルは見つけたんだけどVC++6のサンプルが見つからなくて
どうすればいいか悩み中。

環境:Windows2000Pro + VC++6SP5 + sdk

C++Builderでのサンプルのありか
http://sapporo.cool.ne.jp/tanomi/qanda/a055.html

33 :デフォルトの名無しさん:05/03/20 14:13:29
#define HOGE 35001

DWORD dwSize = 35002;

上記のようにした場合、(dwSize - HOGE) の値が 3 になってしまうのは
何故でしょうか。(35002 - 35001) = 1 を期待しているのですが…。

(環境)WinXP、BorlandC++

34 :デフォルトの名無しさん:05/03/20 14:17:14
おまえの書いたコードにミスがあるから

35 :デフォルトの名無しさん:05/03/20 14:19:14
>>32
MSDNで対応しそうな関数を調べてみた。
Clipboard()->HasFormat(CF_HDROP)
└→IsClipboardFormatAvailable(CF_HDROP)
かわりにGetClipboardDataがNULLを返すかどうか調べればいいような気がするけど。

HDROP hDrop = reinterpret_cast<HDROP>(Clipboard()->GetAsHandle(CF_HDROP));
└→HDROP hDrop = static_cast<HDROP>(GetClipboardData(CF_HDROP));

36 :デフォルトの名無しさん:05/03/20 14:22:11
>>33
デバッグして、(dwSize - HOGE)の演算をする直前の状態でも、dwSizeが35002、HOGEが35001になってる?

37 :33:05/03/20 14:23:07
>>34
char tmp[256];
wsprintf(tmp, "%d", (dwSize - HOGE));
MessageBox(NULL, tmp, "TEST", MB_OK);

このようにして確認しました。
間違いがあれば指摘していただけると助かります。。。

38 :33:05/03/20 14:24:24
訂正です。

wsprintf(tmp, "%d %d %d", dwSize, HOGE, (dwSize - HOGE));
MessageBox(NULL, tmp, "TEST", MB_OK);

この状態で「35002 35001 3」と表示されるのです。

39 :デフォルトの名無しさん:05/03/20 14:29:43
コンパイラの正確なバージョンは?

40 :33:05/03/20 14:35:16
BorlandC++ 5.51です。

41 :デフォルトの名無しさん:05/03/20 14:38:34
%ld

42 :32:05/03/20 14:54:26
>>35
GetClipboardDataを使うように変えてみたけどhDROPEFFECTにNULLが帰ってきちゃう。
今下のような状態だけどMSDN見ながら考え中。何がおかしいんだろう・・・

UINT CF_DROPEFFECT = RegisterClipboardFormat(CFSTR_PREFERREDDROPEFFECT);
HGLOBAL hDROPEFFECT = static_cast<void*>(GetClipboardData(CF_DROPEFFECT));
DWORD* pdw = static_cast<DWORD*>(GlobalLock(hDROPEFFECT));
DWORD dwEffect = *pdw;
GlobalUnlock(hDROPEFFECT);
if (dwEffect & DROPEFFECT_COPY) {
//コピー
}
if (dwEffect & DROPEFFECT_MOVE) {
//切り取り
}
if (dwEffect & DROPEFFECT_LINK) {
//ショートカット
}


43 :33:05/03/20 14:57:55
>>41
「%ld」としてみましたが、同様でした。

試しに値を変更しているのですが、
dwSize=35001, HOGE=35001 → 2
dwSize=35002, HOGE=35001 → 3
dwSize=35003, HOGE=35001 → 4
となります。

しかし、(HOGE-dwSize)と逆にした場合
dwSize=35001, HOGE=35001 → 0
dwSize=35002, HOGE=35001 → -1
dwSize=35003, HOGE=35001 → -2
となり、この結果は正常だと思います。

#defineで定義したものをDWORDから引き算してはいけないのでしょうか?

44 :デフォルトの名無しさん:05/03/20 15:06:39
VisualStudioを使わないのがそもそものミス。
かって来い!

45 :デフォルトの名無しさん:05/03/20 15:09:21
>>43
再現しない。俺が試してみたコード。
ちなみにコンパイラもあわせてある。
とりあえず再現する最小限のコードを晒せ。
話はそれからだ。

#include <windows.h>
#include <stdio.h>

#define HOGE 35001

DWORD dwSize = 35002;

int main(void)
{
char tmp[256];
wsprintf(tmp, "%d %d %d", dwSize, HOGE, (dwSize - HOGE));
MessageBox(NULL, tmp, "TEST", MB_OK);
}


46 :33:05/03/20 15:35:34
33です。
すみません。大ボケでございました。

#define HOGE AA1 /* AAA=35001 */

のように定義されていたので、そのまま35001が入ると思っていましたが
#define AA1 35000+1
#define AA2 35000+2
#define AA3 35000+3
...
のように定義されていたので、実際には (dwSize - 35000 + 1) になっていました。
回答してくださった皆様、検証までしていただいた>>45氏、本当にありがとうございました。
そして、ごめんなさい。ああ…死にたい(;´Д`)

47 :デフォルトの名無しさん:05/03/20 15:54:05
#define HOGE AA1

#define AA1 35000+1

(dwSize - 35000 + 1)




は?

48 :45:05/03/20 15:57:41
>>46
よくあるマクロの副作用ってやつだな。
マクロ定義は取り合えずカッコで囲んどくのがデフォ。

っていうか最近の流儀だと定数定義は
int const AA1=35000+1;
みたいに const 使うのが良いとされてる。


49 :33:05/03/20 16:57:03
>>48
勉強になります。ありがとうございます。

50 :デフォルトの名無しさん:05/03/20 17:47:53
const int AA1じゃなかったか?

51 :デフォルトの名無しさん:05/03/20 18:11:32
>>48
Cではconstは定数扱いじゃないはず。

>>50
どっちでもいい。

52 :デフォルトの名無しさん:05/03/20 18:50:58
>>51
実質的に定数。
っていうか定数じゃなきゃならない理由は別にない。

53 :デフォルトの名無しさん:05/03/20 19:17:21
>>46
・・・まあみんな通ってきた道です。「死にたい」ではなく
「この事を生涯忘れず、後進が同様な事をしても『辞めろ』とか『死ね』とかは決していわないこととします」
といえばもっと格好イイヨ

54 :45:05/03/20 20:29:53
>>46
俺、さっきコンパイルエラーに20分くらい考えちゃったんだけど、
listview を listvirw とtypoしてた。

エラーメッセージに出てたのも listview に見えちゃったんだもんよ〜。
思い込みってこんなもんだ。


55 :デフォルトの名無しさん:05/03/20 20:32:06
エラーメッセージの内容で考えろ …

56 :45:05/03/20 21:09:58
>>55
そうなんだけど、この場合「定義されてない名前だ」って意味のエラーが出るわけで、
スペルが間違ってることに気づかなかったからヘッダファイルの依存関係とか変なところを疑ってしまったんだよ。


57 :17:05/03/20 22:14:21
遅レスですが皆様、わざわざ答えてくださりありがとうございます。
メンテが楽になる反面でビルドが遅くなるんですか…
どうも感謝です。

58 :33:05/03/20 22:22:11
>>53
いや、それとこれとは話が別ですよね?

あなたはご自分が糞質問しても罵倒されたくないからそんなことを言ってるんですよね?

59 :デフォルトの名無しさん:05/03/20 22:23:56
>>52
int a[CONST];
定数じゃねーとコレができねーじゃん。

60 :デフォルトの名無しさん:05/03/20 22:28:08
できるものもあるんだよ

61 :デフォルトの名無しさん:05/03/20 22:37:13
>>60
意味不明

62 :デフォルトの名無しさん:05/03/20 22:42:38
C99だと出来たような希ガス

63 :デフォルトの名無しさん:05/03/20 22:50:40
>>62
C99を改めてチャックしてみた。
たしかにできることになってる。

64 :53=41:05/03/20 23:05:49
>>58
違います。私が>>53みたいな事を言ったとて、糞質問しても罵倒されなくなるとは思えませんが。
>>53 が煽りにみえたのですか?
貴方の自責の記述が好ましく思えたので、本心を少し書いただけ。
信用できなければ「私はここで質問なぞしない」と自分に誓いましょう。
# もう少し本心を書くと「なぜその様に思うのかがわかりません」

65 :33:05/03/20 23:12:14
>>64
>お兄ちゃん大好きだよ!

まで読んだ

66 :デフォルトの名無しさん:05/03/20 23:49:29
どこかで見たような展開になりそうな悪寒

67 :デフォルトの名無しさん:05/03/20 23:51:37
>>66
愛してます

68 :デフォルトの名無しさん:05/03/20 23:52:54
http://pc5.2ch.net/test/read.cgi/tech/1111117094/13-
の事だろ

69 :デフォルトの名無しさん:05/03/21 01:05:48
環境は、WindowsMe、BCCです。
str2(ポインタ)のバッファサイズの取得の仕方を教えてください。
下のプログラムだと、当然4と表示されてしまいます。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
char str[32], *str2;
str2 = (char *)malloc(sizeof(char) * 32);
printf("%d %d\n", sizeof(str), sizeof(str2));
free(str2);
return 0;
}

70 :デフォルトの名無しさん:05/03/21 01:13:29
>>69
ありません
自分で覚えておくように

71 :デフォルトの名無しさん:05/03/21 01:19:18
先生、ぼくの頭では、そんな細かい数字まで覚えてられません。

72 :69:05/03/21 01:26:45
>>70>>71
ありがとうございます。ないんですか。残念です。

http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200502/05020040.txt
の真ん中辺りに、以下のような事が書いてあったので、ずっと探してたんですが。
「ポインタだけではその先のバッファサイズを知ることは出来ませんので、
サイズも渡しているワケです。(Win32APIにもそのようなものがある)」

73 :デフォルトの名無しさん:05/03/21 01:32:32
リンク先は読むのやめたが
引用した部分の最初の行が読めないのか?

74 :デフォルトの名無しさん:05/03/21 01:43:09
ハンドルの取り扱い?が良くわからないので教えてください。BCC で、WinXP
IMEの状態が直接入力かそうでないかを判別したいです。

#include<windows.h>
#include<imm.h>

int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
LPSTR lpCmdLine ,
int nCmdShow )
{
HIMC hImc = ImmGetContext(hInstance);
BOOL bRet = ImmGetOpenStatus(hImc);
ImmReleaseContext(hInstance,hImc);
return bRet;
}

このコードでは 10行目と12行目で問題のあるポインタの変換という警告が出ます。

75 :デフォルトの名無しさん:05/03/21 01:45:17
void *から他のポインタ型の変数へは
Cなら警告なしで代入可能
C++は代入不可能

76 :74:05/03/21 01:51:38
>>75 Cとしてコンパイルすればいいということですか?

77 :デフォルトの名無しさん:05/03/21 02:43:47
>76
キャスト(static_cast)して代入

78 :デフォルトの名無しさん:05/03/21 02:48:56
>>74
HWND を渡すべきところに HINSTANCE を渡しているから、型が合わない。
ふつうにコードが間違っている可能性が高い。

Cでコンパイルすると、こういう間違ったコードでも警告だけで済んでしまうから、
なるべくC++にしとけ。

79 :デフォルトの名無しさん:2005/03/21(月) 04:32:30
class CListensoc : public CAsyncSocket {
public:
 CListensoc();
 virtual ~CListensoc();
 virtual void OnAccept(int nErrorCode);
 virtual void OnReceive(int nErrorCode);
};
void CListensoc::OnAccept(int nErrorCode) {
 CAsyncSocket::OnAccept(nErrorCode);
}
void CListensoc::OnReceive(int nErrorCode) {
 CAsyncSocket::OnReceive(nErrorCode);//呼ばれない
}
class hoge {
 CListensoc listen;
 hoge::hoge() {
  listen.Create(9000);
  listen.Listen();
 }
 hoge::test() {
  char msg[64];
  sprintf(msg, "%s", "test");
  int ret = listen.Send(msg, sizeof(msg));//戻り値は-1
 }
};
このような構成でhogeをnewしてtest()を実行しましたが、OnReceive()が呼ばれません。
環境はWindows2000sp4、VC++6.0sp5、目的はソケット通信の動作を理解するためのテストで、下記のサンプルプログラムを参考にサーバー側の処理を弄っています。
http://support.microsoft.com/default.aspx?scid=kb;ja;175668

サンプルのClient側のconnectに対してOnAccept()が動作しているので、同じようにCAsyncSocketのOnReceive()をオーバーライドすればいいかと思ったのですが・・・
間違っている箇所などを教えて頂けますでしょうか。よろしくお願いします。

80 :デフォルトの名無しさん:2005/03/21(月) 06:24:03
>>79
http://www.ne.jp/asahi/yamashita/programming/tips/socket.html
Listen するソケットとは別に、接続を受け入れ、データを送受信するソケットを用意する必要がある。

81 :デフォルトの名無しさん:2005/03/21(月) 07:11:39
>>72
Win32APIのHeap系関数ならHeapSize()がある。
(Global系とLocal系にもないわけではないけど)

82 :デフォルトの名無しさん:2005/03/21(月) 09:57:24
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdndeepc/htm/deep08032000.asp
これがスラスラ読めたら、余裕でプログラマになれますか?
真面目に質問です。

83 :デフォルトの名無しさん:2005/03/21(月) 10:21:08
読めない香具師はC++使えているとは言えないと思うが…
つかコンパイルも通らないコードの載せるのってどうよ>MS

84 :デフォルトの名無しさん:2005/03/21(月) 11:05:17
=== 演算子って何?

85 :デフォルトの名無しさん:2005/03/21(月) 11:14:39
>>83
すごいですね。尊敬します。
今難しい問題に取り組んでいるのですが、
これの答えはわかりますか?

(Q)これの実行結果を答えなさい。

multiset<int> ms;
for ( int i = 0; i < 3; ++i )
for ( int j = 0; j < 3; ++j )
ms.insert(j);
const int x = 1;
typedef multiset<int>::iterator iter;
pair<iter,iter> range;
range = ms.equal_range(x);
while ( range.first != range.second ) {
cout << *range.first << ' ';
++range.first;
}

86 :デフォルトの名無しさん:2005/03/21(月) 11:15:46
>>85
コードがあるなら試せばいいじゃない

87 :デフォルトの名無しさん:2005/03/21(月) 11:18:42
宿題だったりして

88 :デフォルトの名無しさん:2005/03/21(月) 11:21:53
実行せずに、どうやって動くのか想像しろと。
なんでも動かせばいいってもんじゃない。

89 :デフォルトの名無しさん:2005/03/21(月) 11:29:11
>読めない香具師はC++使えているとは言えないと思うが…

イタタ・・・

90 :69:2005/03/21(月) 12:11:14
ありがとうございます。

>>73
文章力がなくて申し訳ないです。

>>81
それでいけそうです。

91 :デフォルトの名無しさん:2005/03/21(月) 12:35:59
>>89
読めない奴こそ痛いよ、実際。

92 :デフォルトの名無しさん:2005/03/21(月) 12:39:42
>>84
C++ には === 演算子なんてない。

PHP にはあったな。意味合い的には boost::addressof(lhs) == boost::addressof(rhs)。

93 :デフォルトの名無しさん:2005/03/21(月) 12:46:42
>>85
それSTLだろ

94 :デフォルトの名無しさん:2005/03/21(月) 12:48:10
try 〜 catch は遅いって聞いたんだけど
どの程度遅くなるんでしょうか?


95 :デフォルトの名無しさん:2005/03/21(月) 12:59:48
>>94
環境による

96 :デフォルトの名無しさん:2005/03/21(月) 13:00:28
やっぱgotoだよね

97 :デフォルトの名無しさん:2005/03/21(月) 13:01:13
>>90
まさかとは思うが、mallocで確保したものをHeapSize()しようとしてないだろうな?

98 :デフォルトの名無しさん:2005/03/21(月) 13:02:39
例外ってそんなに頻繁に呼び出すもんじゃないだろ。
せいぜいループの外で使うぐらいだ。

99 :84:2005/03/21(月) 13:03:21
>>92
http://jbbs.livedoor.jp/bbs/read.cgi/computer/5651/1048756904/r45-47
を見て、知らない間に新しい演算子が追加されたのかと思ってました。
アリガトン

100 :デフォルトの名無しさん:2005/03/21(月) 13:03:27
ある人にC言語の質問をしたいのですが、何か面白いソースコードはないでしょうか?

101 :デフォルトの名無しさん:2005/03/21(月) 13:03:39
>>92
$a === $b 等しい $a が $b に等しく同じ型でである場合に TRUE。(PHP 4のみ)

102 :デフォルトの名無しさん:2005/03/21(月) 13:04:51
LPCTSTR str[] = {TEXT("アアア") ,TEXT("イイイ") }

str[0]>str[1] ってやった場合コンパイラは何を基準に比較すんの?

103 :92:2005/03/21(月) 13:05:10
>>101
あー、そうだった。
=== がアドレス比較演算子なのは、今俺が作ってる俺言語の仕様だ(゚Д゚;)

104 :デフォルトの名無しさん:2005/03/21(月) 13:06:57
嘘かもしれんがJavaScriptにもあったろ?
文字列比較とかで参照レベルで同じ値ならtrueじゃなかった?

105 :デフォルトの名無しさん:2005/03/21(月) 13:08:03
>>100
ぎゃふんと言わせたいからってこと?
自分で理解できないコード持ち出してどうする

106 :デフォルトの名無しさん:2005/03/21(月) 13:14:56
>>102
アドレス

107 :デフォルトの名無しさん:2005/03/21(月) 13:15:20
>100
GUIベースのプログラムを作ってみたいのですが、最初はどんなものを作ればいいですか?

とかと同類な質問ですね

108 :デフォルトの名無しさん:2005/03/21(月) 13:17:08
>>107
ラーメンタイマー(アナログ)

109 :デフォルトの名無しさん:2005/03/21(月) 13:17:40
は?アドレス?俺は配列の中身が昇順にソートするようにしてるけど
アドレスで比較してるなら全く変わらないけど微妙に変わったぞ

110 :デフォルトの名無しさん:2005/03/21(月) 13:20:05
オブジェクトのnullに対して hoge===null はtrueだっけか
どっかにnullというオブジェクトがひっそりと生きてるんだろうな

111 :デフォルトの名無しさん:2005/03/21(月) 13:22:29
今、俺はこれを勉強してる
http://www005.upp.so-net.ne.jp/episteme/html/stlprog/

今日にはマスターできる
俺に嫉妬するなよ(w

112 :デフォルトの名無しさん:2005/03/21(月) 13:23:49
std::vector<Hoge>::iteratorとHoge*ってどう違うん?

113 :デフォルトの名無しさん:2005/03/21(月) 13:43:00
>>112
vectorのiteratorに絞っての質問?

114 :デフォルトの名無しさん:2005/03/21(月) 13:45:11
>>113
そう。ランダムアクセスイテレータとポインタの違い

115 :デフォルトの名無しさん:2005/03/21(月) 14:14:26
>>98
例外を呼んだときにコストがかかるという認識で良いのですね?
呼ばなければ遅くはならないと。

116 :79:2005/03/21(月) 14:23:28
>>80
大変分かりやすい例をありがとうございました。

117 :33:2005/03/21(月) 14:28:51
>>115
throwしなくてもtry通るときにはコストがかかる

118 :デフォルトの名無しさん:2005/03/21(月) 14:31:56
>>114
vectorの各要素はメモリ上に連続して配置されることが保証されているけど、
ランダムアクセスイテレータを持つ連中がすべてそうなわけではない。
srd::string hoge = "fugafuga";
char* p = &hoge[0];
++p;
なんて時、p == &hoge[1]とは限らない。std::dequeもそう。

言うまでもなく、「連続したメモリ上を、型サイズを頼りに前後する」以外の
要素の舐め方が必要な場合、ポインタ演算ではどうしようもない。イテレータの出番。
んで、STLコンテナの中でvectorだけポインタでもデータを舐められるからといって、
こいつにだけiteratorを持たせないってのは都合が悪い。だから持っている。

std::vector<Hoge>::iteratorは、単にHoge*のtypedefである場合もあるね。

119 :デフォルトの名無しさん:2005/03/21(月) 14:43:04
> 要素の舐め方が必要な場合
コボラーの方でつか?

120 :デフォルトの名無しさん:2005/03/21(月) 14:46:51
JavaScriptで操作できるアプリケーション(Sleipnir)って結構あるけど、
どういうロジックなの?COMとかいうやつなのかな?

121 :デフォルトの名無しさん:2005/03/21(月) 17:57:27
とにかくコンテナ内データを操作したけりゃ、イテレータを使えばいいだけのこと。

122 :デフォルトの名無しさん:2005/03/21(月) 18:00:33
>>120その通り

123 :デフォルトの名無しさん:2005/03/21(月) 18:02:44
COMとDLLってなにがちがうん?

すまん、初心者質問で。
同じプラグインなものだとおもってた。

124 :デフォルトの名無しさん:2005/03/21(月) 18:04:27
>>109
str[0]はTEXT("アアア")へ、str[1]はTEXT("イイイ")へのアドレス値を保持してる。
TEXT("アアア")とTEXT("イイイ")は何処に確保されるかはコンパイラの勝手。

125 :デフォルトの名無しさん:2005/03/21(月) 18:11:13
>>117 それも、環境による。

126 :デフォルトの名無しさん:2005/03/21(月) 18:12:23
>>102
同じ配列上にないポインタに対する比較演算子の結果は不定。

127 :デフォルトの名無しさん:2005/03/21(月) 18:55:45
class Unko {
public:
 int *p;
};

const Unko a;
int *pp

*(a->p) = 1;  // Error?
p = pp;     // Error?

constなオブジェクト内のポインタって
const int* const p;
ということになってしまうのでしょうか?
ちょっとコンパイラによって挙動が変わっていたので、
C++の言語仕様的にはどうなんだろうと思ったんですが。。


PS. pc5鯖復活おめ

128 :デフォルトの名無しさん:2005/03/21(月) 18:58:22
>>127
a->p は int* const

Cの頃から変わってない。
これの挙動が変わるって、ひどいコンパイラだな。
コンパイラ(バージョン含む)晒せ。

129 :デフォルトの名無しさん:2005/03/21(月) 19:01:10
a->pじゃなくてa.pだよね?

130 :デフォルトの名無しさん:2005/03/21(月) 19:03:46
>>128
Cの頃から?

131 :128:2005/03/21(月) 19:10:54
>>129
ほんとだ。ごめん。

>>130
struct Unko { int* p; }
const struct Unko a;
*a.p = 0;

132 :デフォルトの名無しさん:2005/03/21(月) 19:11:16
構造体があるし

133 :デフォルトの名無しさん:2005/03/21(月) 19:18:56
>>131
constはC++が先

134 :デフォルトの名無しさん:2005/03/21(月) 19:26:32
 初心者、というより厨な質問です。識者の方のご助言・ご教示いただきたいと思います。
質問の要旨は、Linux(Red Hat 64ビット版)、CPUはx86_64、コンパイラはgccの3.4.3で、
あるプロセスの最大消費メモリの計測を行いたいのです。
 ちなみにSolaris8ではこんな感じで実装しています(一部略)。
-------------------------------------------------------------------------
prstatus_t status_proc;
sprintf(fnname, "/proc/%ld", (long)pid);
fd = open(fname, O_RDONLY);
(中略)
err = ioctl(fd, PIOCSTATUS, &status_proc) ;
if( err == -1) {
fprintf(stderr, "failed to measure memory size.\n")
close(fd);
return -1; /* error */
};
fprintf(stdout, "used memory %ld\n", status_proc.pr_brksize);
close(fd);
return 0; /* success */
--------------------------------------------------------------------------
 ざっと調べた限りでは、/proc/PID/statusの"VmSize:"の項に表示される値がプロセス
(プログラム)の使用メモリかと思ったのですが、どうも違うようです。なおPIDはモニタした
いプロセスIDを意味しています。
 Linuxでは他に使用メモリ値を取得する方法があるのでしょうか?よろしくお願いします。

135 :デフォルトの名無しさん:2005/03/21(月) 19:27:56
>>125
ちなみにWindowsXP + VC6だと?

136 :128:2005/03/21(月) 19:34:40
>>133
そうだな。
「ANSI C の頃から変わってない」ってことでいいか?

137 :デフォルトの名無しさん:2005/03/21(月) 19:36:11
>>135 VC++ の try は通るだけでコストがかかる。

138 :デフォルトの名無しさん:2005/03/21(月) 19:36:14
Cの頃ってなんだよタコ

139 :135:2005/03/21(月) 20:37:24
ありがと

140 :デフォルトの名無しさん:2005/03/21(月) 20:43:59
ふはは おい、俺の壮大なつりに誰も気づいてないぜ こりゃ笑えるwww
と全然関係ないスレで釣り宣言

34 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)