【初心者歓迎】C/C++室 Ver.72【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/03/05(金) 16:51:13ただしその場合、質問者は必ず環境を書きましょう。
※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:01ttp://codepad.org/
長いソースを貼るときはここへ!
0003デフォルトの名無しさん
2010/03/07(日) 13:09:23C言語なら俺に聞け(入門編)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扱ってたんだけどこれって問題ない?急に気になって昼寝も出来ません。
0005デフォルトの名無しさん
2010/03/08(月) 12:38:17全然根拠が無くてダメ。
intptr_t または uintptr_t と void* を使え。
0006デフォルトの名無しさん
2010/03/08(月) 13:01:57C++ではヘッダが無いので使えないんだけど。自前で用意?
0007デフォルトの名無しさん
2010/03/08(月) 13:11:16boost/cstdint.hpp が使える環境か C++0x 対応のコンパイラじゃなければ、自前で。
sizeof を確認して使えばだいたいの環境では望む結果が得られるかと。
0008デフォルトの名無しさん
2010/03/08(月) 13:17:000009デフォルトの名無しさん
2010/03/08(月) 13:26:20あ・・・、そうみたいだね。ごめん。
あと、 C99 対応のコンパイラでも stdint.h がたぶん使える。
0010デフォルトの名無しさん
2010/03/08(月) 15:01:47まあそこまで気にしなくていいだろうとは思うけど
0011デフォルトの名無しさん
2010/03/11(木) 03:00:20一度はやっておかないとと思いここにきました
よろしくお願いします
0012デフォルトの名無しさん
2010/03/11(木) 13:07:240013デフォルトの名無しさん
2010/03/11(木) 15:54:42アルゴリズムを勉強したほうが効果的
0014デフォルトの名無しさん
2010/03/11(木) 18:11:51typedef 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:47DrawFormatString(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お!できましたありがとうございます
0017デフォルトの名無しさん
2010/03/11(木) 21:12:51std::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();
}
////////
001817
2010/03/11(木) 21:13:450019デフォルトの名無しさん
2010/03/11(木) 21:56:490020デフォルトの名無しさん
2010/03/11(木) 22:12:31がないだろうなあ。
0021デフォルトの名無しさん
2010/03/11(木) 22:28:41#define _SECURE_SCL 0
しない場合2と3が遅くなる
VC以外は知らない
0022デフォルトの名無しさん
2010/03/11(木) 23:02:182と3が遅くなるのに4は遅くならないの?
0023デフォルトの名無しさん
2010/03/12(金) 02:05:55CLIは.NETというのがわかった
あとの二つがよくわからない
0024デフォルトの名無しさん
2010/03/12(金) 02:20:47Windows向けの開発をしたいということだね?
MFCは過去の遺物なので忘れていい。CLIは筋が悪いので忘れていい
(.NETを使うならC#を使えばいい)。なので、C++なら Windows SDK
(Win32 APIとか呼ばれる)が無難だと思う。
0025デフォルトの名無しさん
2010/03/12(金) 02:49:46ども
SDKもVC++2008EEもそれぞれ無料のを落とせるんですよね?
それとその3つの中で処理速度を順番で表すとどうなりますか?
0026デフォルトの名無しさん
2010/03/12(金) 11:53:02メモリを確保する機能は言語の物ですか、それともOSの物なんですか?
0027デフォルトの名無しさん
2010/03/12(金) 12:00:39ECC 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:150029デフォルトの名無しさん
2010/03/12(金) 13:03:16実際に何がメモリを確保しているか(実装)という点ではOSの機能であるかもしれない。
でも、どこで動作が定められているか(インターフェース)という点では言語の機能と言える。
プログラマから見たnewの動作はOSが無い環境でも同じになる。
0030デフォルトの名無しさん
2010/03/12(金) 14:58:55再起動しないといけなくなったりするの?
0031デフォルトの名無しさん
2010/03/12(金) 15:03:25今時、まともなOS上ではそんな言語はない。
尤も、実装されているOSによっては当然そうなる場合もあるが。
0032デフォルトの名無しさん
2010/03/12(金) 15:17:400034デフォルトの名無しさん
2010/03/12(金) 19:49:37ミサイルに載せる奴じゃないはずさ
0035デフォルトの名無しさん
2010/03/12(金) 19:57:49もしポインタの使い方が間違った場合
ソフトだけが暴走して終了すればなんともないの?
OSにダメージが及ぶことはない?
0036デフォルトの名無しさん
2010/03/12(金) 20:02:360037デフォルトの名無しさん
2010/03/12(金) 21:01:470038デフォルトの名無しさん
2010/03/12(金) 21:03:29まずありえないだろうけど
最悪の場合にはコンピュータでできることならなんでも起こりうる
HDDがフォーマットされたり
ウイルスをばら撒いたり
恥ずかしいファイルが流出したりね
0039デフォルトの名無しさん
2010/03/12(金) 21:33:460040デフォルトの名無しさん
2010/03/12(金) 21:50:57DOSやWin3.1のころはそうだったな。
今はアプリが落ちるだけですむ。
0041デフォルトの名無しさん
2010/03/12(金) 22:02:27それでも何度か青画面出したと思うけどあれは一体なんだったんだろう
0042デフォルトの名無しさん
2010/03/12(金) 22:12:030043デフォルトの名無しさん
2010/03/12(金) 23:33:38今は安心して使えるんですね
VC++はじめようと思います
0044デフォルトの名無しさん
2010/03/13(土) 18:23:46{
static const hoge HOGE;
}
const hoge ns::Hoge = hoge();
定数としてのグローバル変数をcppじゃなくてヘッダだけで定義したいんだけどできますか?
0045デフォルトの名無しさん
2010/03/13(土) 18:36:450046デフォルトの名無しさん
2010/03/13(土) 19:24:48namespace ns
{
struct Hoge;
template<bool Dummy = true>
struct HogeHeaderOnlyConstants { static Hoge const HOGE; };
struct Hoge : HogeHeaderOnlyConstants<> {};
template<bool Dummy>
Hoge const HogeHeaderOnlyConstants::HOGE = Hoge();
}
http://d.hatena.ne.jp/Cryolite/20051129#p2
http://d.hatena.ne.jp/Cryolite/20051129#p3
0047デフォルトの名無しさん
2010/03/13(土) 20:21:340048デフォルトの名無しさん
2010/03/14(日) 13:18:04externの動きがいまいちわからない
0049デフォルトの名無しさん
2010/03/14(日) 13:34:310050デフォルトの名無しさん
2010/03/14(日) 13:44:01無いなら無名名前空間かstatic
005149
2010/03/14(日) 14:01:47>extern=どこかにあるやつを使うぜ!
・*.hに1つだけ変数を宣言する
・2つの*.cppから*.hに宣言した変数を使う
ってことができるわけですか?
>>50
>拡張する予定が有るならextern
ここの拡張は、*.hと*.cppが1対nになること可能性があるって意味ですよね
0053デフォルトの名無しさん
2010/03/14(日) 14:09:54そう
hoge.cpp
int g_val;//実体はコレ
hoge.h
extern int g_val;
使う人
foo.cpp extern int g_valするかhoge.hをインクルード
hage.cpp 以下同様
005448
2010/03/14(日) 14:19:47そうと言われても、>>49なのか>>50か分からないんですけど...
・1つの*.hを2つの*.cppで共有している
・しかし2つも*.hに変数を2つ書くのが(考えるのが)面倒い
・それじゃ、*.hに1つだけ変数を宣言して、あたかも2つ宣言したようしよう
ってのがexternですね
0055デフォルトの名無しさん
2010/03/14(日) 14:26:460056デフォルトの名無しさん
2010/03/14(日) 20:27:08の一番下のmain関数
Neko obj(::obj);
の ::obj は何を指すんですか?
0057デフォルトの名無しさん
2010/03/14(日) 20:29:450058デフォルトの名無しさん
2010/03/14(日) 20:53:19ありがとうございます
0059デフォルトの名無しさん
2010/03/14(日) 20:59:28ネストクラスとかstaticメンバ関数つかえばよくね?
0060デフォルトの名無しさん
2010/03/14(日) 21:01:41テンプレートが絡んでくるとそう簡単じゃないんだよ。
Effective C++ぐらい嫁。
0061デフォルトの名無しさん
2010/03/14(日) 23:32:10/usr/includeの下にヘッダファイルが保存されています
標準的なライブラリの実態はどこにあるのですか
OS or コンパイラ?
0062デフォルトの名無しさん
2010/03/14(日) 23:33:330063デフォルトの名無しさん
2010/03/15(月) 00:00:06ものによる。
/usr/include ってことはUNIX系だろうから、たいていOS付属で
/usr/lib など。
006461
2010/03/15(月) 00:11:33普通に考えてみれば、/usr/lib/以下にありますよね
/usr/libはソフトの実体が入っているな〜程度の事しか思っていませんでした
/usr/libの中のデータは*.soが多いわけですし
わかりました、ありがとうございます
0065デフォルトの名無しさん
2010/03/15(月) 02:10:20もしかして、実体ってライブラリのことじゃなくてソースのことだった
りする?
それももちろん環境依存だけども。
0066デフォルトの名無しさん
2010/03/15(月) 12:09:33std::locale loc = std::locale();
loc = std::locale(loc, "japanese", std::locale::ctype);
std::locale::global(loc);
といった記述をDLLの冒頭に書いた場合、それを読み込むソフトや他のDLLにも影響は及ぶのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています