トップページ⇒tech
1001コメント325KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/03/05(金) 16:51:13
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.71【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1264774545/

【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
http://codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め)

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
0002デフォルトの名無しさん2010/03/05(金) 16:52:01
 codepad
 ttp://codepad.org/

長いソースを貼るときはここへ!
0003デフォルトの名無しさん2010/03/07(日) 13:09:23
姉妹スレ

C言語なら俺に聞け(入門編)Part 61
http://pc12.2ch.net/test/read.cgi/tech/1267799238/
C言語初心者質問総合(だいぶ過疎っているが)
http://yutori7.2ch.net/test/read.cgi/pc2nanmin/1080308026/
C++相談室 part78
http://pc12.2ch.net/test/read.cgi/tech/1266070683/
スレを勃てるまでもないC/C++の質問はここで 13
http://pc12.2ch.net/test/read.cgi/tech/1260842197/.
C/C++小心者スレッドPart1
http://pc12.2ch.net/test/read.cgi/tech/1186262298/
0004デフォルトの名無しさん2010/03/08(月) 12:31:09
今まで特に考えもせずにstd::size_tとstd::ptrdiff_tをポインタサイズ互換の整数型として
扱ってたんだけどこれって問題ない?急に気になって昼寝も出来ません。
0005デフォルトの名無しさん2010/03/08(月) 12:38:17
>>4
全然根拠が無くてダメ。
intptr_t または uintptr_t と void* を使え。
0006デフォルトの名無しさん2010/03/08(月) 13:01:57
>>5
C++ではヘッダが無いので使えないんだけど。自前で用意?
0007デフォルトの名無しさん2010/03/08(月) 13:11:16
>>6
boost/cstdint.hpp が使える環境か C++0x 対応のコンパイラじゃなければ、自前で。
sizeof を確認して使えばだいたいの環境では望む結果が得られるかと。
0008デフォルトの名無しさん2010/03/08(月) 13:17:00
boost/cstdint.hppにはintptr_tなんて無いように見えるけども
0009デフォルトの名無しさん2010/03/08(月) 13:26:20
>>8
あ・・・、そうみたいだね。ごめん。

あと、 C99 対応のコンパイラでも stdint.h がたぶん使える。
0010デフォルトの名無しさん2010/03/08(月) 15:01:47
intptr_t/uintptr_tはoptionalだから環境によっては定義されないこともある
まあそこまで気にしなくていいだろうとは思うけど
0011デフォルトの名無しさん2010/03/11(木) 03:00:20
C言語の処理速度が速いと聞いて
一度はやっておかないとと思いここにきました
よろしくお願いします
0012デフォルトの名無しさん2010/03/11(木) 13:07:24
Cに入る者、汝一切の便利機能を棄てよ
0013デフォルトの名無しさん2010/03/11(木) 15:54:42
>>11
アルゴリズムを勉強したほうが効果的
0014デフォルトの名無しさん2010/03/11(木) 18:11:51
(DXライブラリというものを使っています。)

typedef struct{

double x, y;
int flag, counter, hp, move, g;
char directory[50];

}ENEMY_INF;

DrawFormatString(0, 20, co_black, "%s", te[i].directory[50]);

デバッグのエラーで
この行番号が指定されて、「Fileshoot.exe の 0x00f8b27f でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xffffffcc を読み込み中にアクセス違反が発生しました」
とでてしまいます。
なにが原因でどうすればいいか分かりません
0015デフォルトの名無しさん2010/03/11(木) 18:31:47
>>14
DrawFormatString(0, 20, co_black, "%s", te[i].directory[50]);
↓
DrawFormatString(0, 20, co_black, "%s", te[i].directory);
0016デフォルトの名無しさん2010/03/11(木) 18:47:17
>>15
お!できましたありがとうございます
0017デフォルトの名無しさん2010/03/11(木) 21:12:51
質問です
std::vectorと[]演算子だとどれくらいの速度差が出ますか?
例:
Object* a[6];
std::vector<Object> b;
for(int i=0; i<6; i++){
a[i] = new Object();
b.push_back(new Object());
}

/// この部分
for(int i=0; i<6; i++){
a[i].test();
}
for(int i=0; i<b.size(); i++){
b[i].test();
}
////////
0018172010/03/11(木) 21:13:45
すみません、std::vectorと通常の配列とだと、どれくらいの差が、でした・・・。
0019デフォルトの名無しさん2010/03/11(木) 21:56:49
ああ、まずは実測だ
0020デフォルトの名無しさん2010/03/11(木) 22:12:31
実測が基本だが、vectorの性質上、デバッグビルドでもしない限りは差
がないだろうなあ。
0021デフォルトの名無しさん2010/03/11(木) 22:28:41
http://codepad.org/kFwYJHQs
#define _SECURE_SCL 0
しない場合2と3が遅くなる

VC以外は知らない
0022デフォルトの名無しさん2010/03/11(木) 23:02:18
>>21
2と3が遅くなるのに4は遅くならないの?
0023デフォルトの名無しさん2010/03/12(金) 02:05:55
CLI SDK MFCの3種類があるらしいけど
CLIは.NETというのがわかった
あとの二つがよくわからない
0024デフォルトの名無しさん2010/03/12(金) 02:20:47
>>23
Windows向けの開発をしたいということだね?

MFCは過去の遺物なので忘れていい。CLIは筋が悪いので忘れていい
(.NETを使うならC#を使えばいい)。なので、C++なら Windows SDK
(Win32 APIとか呼ばれる)が無難だと思う。
0025デフォルトの名無しさん2010/03/12(金) 02:49:46
>>24
ども
SDKもVC++2008EEもそれぞれ無料のを落とせるんですよね?
それとその3つの中で処理速度を順番で表すとどうなりますか?
0026デフォルトの名無しさん2010/03/12(金) 11:53:02
newをするとメモリが確保されますが
メモリを確保する機能は言語の物ですか、それともOSの物なんですか?
0027デフォルトの名無しさん2010/03/12(金) 12:00:39
>>21
ECC 6.2.1では1が最も早く、2は1の2倍掛かり、3と4は10倍掛かる
最適化が糞だな

VC9の場合は2が1の4万倍、3が1の15万倍掛かる
1と4は最適化で消えて行くのだと思う

http://codepad.org/CCYieupw

(Windows専用)
0028デフォルトの名無しさん2010/03/12(金) 12:04:15
OSのものです
0029デフォルトの名無しさん2010/03/12(金) 13:03:16
>>26
実際に何がメモリを確保しているか(実装)という点ではOSの機能であるかもしれない。
でも、どこで動作が定められているか(インターフェース)という点では言語の機能と言える。
プログラマから見たnewの動作はOSが無い環境でも同じになる。
0030デフォルトの名無しさん2010/03/12(金) 14:58:55
この言語はちょっとミスったらOS暴走して
再起動しないといけなくなったりするの?
0031デフォルトの名無しさん2010/03/12(金) 15:03:25
>>30
今時、まともなOS上ではそんな言語はない。
尤も、実装されているOSによっては当然そうなる場合もあるが。
■ このスレッドは過去ログ倉庫に格納されています