[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 21:15 / Filesize : 160 KB / Number-of Response : 654
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 23:15:45 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

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

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

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。


331 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:37:35 ]
Oh! ナルホド!

332 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:07:19 ]
>>322
コンパイラによっては順番に書けやって怒られるぞ。

333 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:26:25 ]
>310
string が std::string を指していて、かつ hoge<std::string> が可視なら特殊化されたものを使うだろ。
template だからって変なこと考える必要はないと思うよ。

334 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:30:57 ]
別のファイルでstd::stringを自分で定義してhoge<std::string>ってしたらどうなるの?

335 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:32:18 BE:1080572494-2BP(0)]
std内に何かを追加した時点で
動作が保障されないんだっけ?

336 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:33:25 ]
stdに追加していいのはテンプレートの特殊化だけだったような

337 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:36:57 ]
>>332
> コンパイラによっては順番に書けやって怒られるぞ。
そんなクソコンパイラもあるのか。


338 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:39:51 ]
> std内に何かを追加した時点で
> 動作が保障されないんだっけ?
そう。未定義の動作になる。
ただし特殊化を除く。

> stdに追加していいのはテンプレートの特殊化だけだったような
その通り。



339 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:59:33 ]
定義したくらを

class Hoge
{
....
}

Hoge h[100];

ってやるとエラーになっちゃうんですけど
h[100]って定義するためには何を自分のクラスに
記述すればいいのでしょうか。





340 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:02:32 ]
デフォルトコンストラクタ

341 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:02:36 ]
Hoge* h = new Hoge[100];

配列形式はPODしか使えない
おそらくコンストラクタを持っているのだろう

342 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:08:47 ]
class Hoge {
int i;
public:
void seti(int j) { i = j; }
void printi() const { std::cout << i << std::endl; }
} hoge[100];

int main()
{
for (int i = 0; i < 100; i++)
hoge[i].seti(i);
for (int i = 0; i < 100; i++)
hoge[i].printi();
}

悪い、勘違いしていたようだ
>>340さんの言う通りデフォルトコンストラクタが抜けているんだろうな
デフォルト引数などを使って解決する事もできる

343 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 14:56:12 ]
DLLの中の人が使うための共有メモリがあるとします
このメモリの確保・開放はDllMainでやるか、グローバルスマポでやるか
どっちが安全でしょうか?

344 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 15:10:31 ]
DLLの中の人次第

345 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 15:40:54 ]
>>343
グローバル変数やDllMainは使わない方法を考えるべきだね。


346 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:20:02 ]
エディタのCPad for bccを
VisualC++のコンパイラに適応させるにはどうしたらいいですか?
コンパイラの場所以外になにか設定が必要でしょうか?


347 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:31:28 ]
>>346
普通はそんな使い方しない。
IDE使えばいいんじゃないかな??

348 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:42:06 ]
>>347
IDEがちょっと重いのでエディタでと変えようとしてたんですが、無理ですかね?


349 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:49:19 ]
>>348
一応、CL自体はコマンドラインから使えるようにはなってるはずだが、もうズーットつかってないなぁ。
>cl /help でヘルプが見れたので適時変換して使えるようにすればできるかも。
ただ、労力には見合わないと思う。



350 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:52:25 BE:1200636858-2BP(0)]
プロジェクトを用意してdevenvがいいんじゃないか

351 名前:296 mailto:sage [2010/02/11(木) 17:56:53 ]
たしかにVC++は重い(スタートメニューが)

352 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:58:15 ]
名前間違えた

353 名前:デフォルトの名無しさん [2010/02/11(木) 18:22:28 ]
-lm でlibm.aをリンクするらしいですが、
じゃあ僕もlib?.aファイル作ってみたいです
mingw32 gcc 4.4.1 Windows2000 SP4ですが
どうやって生成するんですか?

354 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:31:27 ]
ld使え

355 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:55:04 ]
コンストラクにstd::bad_allocをつける
場合、宣言の部分にだけかけばいいのでしょうか。

誰かサンプル書いて

356 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 20:16:48 ]
つーかコンストラクタがstd::bad_allocを投げる場合は大抵のOSでは
後処理も出来ない状態の事が多いな

357 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:05:47 ]
「bad_allocをつける」って意味がわからない。
例外指定のことだろうか。

358 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:42:47 ]
>>356
じゃあ書かない方がいいのですね。

コンストラクタでメモリ確保とか何か重要な
C++は言語の不備なのでしょうけど、失敗が
ある場合放置するしかないのですよね?

359 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:47:28 ]
bad_allocに限って言えばなにも考えずにmainでキャッチしてエラー通知して終了でいいと思う



360 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:48:06 ]
>>358
メモリが足らないって、どの言語を使っていてもあるでしょ。

361 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:50:56 ]
includeする時に、*.hが有るのと無いのがあるじゃん
あれって何が違うの?

362 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:57:16 ]
>>361
C の標準ヘッダは .h。
C++ の標準ヘッダは拡張子なし。
非標準ヘッダは適当。

363 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:58:00 ]
ファイル名が違う
#include は *.h でも *.txt でも *.hoge でもC言語の文法に合った内容のテキストファイルならなんでも #include できる

364 名前:361 mailto:sage [2010/02/12(金) 00:00:33 ]
>>362-363
ありがとう。知らなかったよ

365 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 07:48:20 ]
便乗で

""と<>両方あるけどあれもあんまり意味はない?

366 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:02:22 ]
""だとカレントディレクトリを最初に検索
<>だとシステムのヘッダのみを検索

367 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:53:22 ]
>>366
www.kijineko.co.jp/tech/superstitions/quoted-headername-is-searched-for-from-cwd.html

368 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:37:15 ]
inlineにするときに、これはまず展開されねーなっていう場合ってどんなのがある?
確実にダメなのって関数ポインタを使ってる時ぐらいかな?

369 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:45:49 ]
関数ポインタって、それ仮想関数のことも当てはまるじゃん。



370 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:48:18 ]
おまいら配置new/deleteって普段つこうとるの?

371 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:11:38 ]
特殊な状況でしか塚湾だろう。

372 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:37:22 ]
C言語で、windows.hのSleep()ではないウエイトをかける方法ありませんか?

373 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:41:14 ]
timeGetTimeを使う

374 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:49:39 ]
FindFirstFileを使いたいんですけれど
どうすれば使えるかがわかりません

何をどうすればいいのですか?

375 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:51:26 ]
まずwinapiスレに行きます

376 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:53:04 ]
次に手を洗います

377 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:53:52 ]
ググって出たソースをパクる

378 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:54:10 ]
schiphol.2ch.net/gameurawaza/

379 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:54:53 ]
誤爆



380 名前:デフォルトの名無しさん [2010/02/12(金) 21:59:09 ]
extern って、

#ifdef _MAIN_
int a, b, c;
char d, e, f;
struct _ST g, h, i;
class _CL j, k, l;
#else
extern int a, b, c;
extern char d, e, f;
extern struct _ST g, h, i;
extern class _CL j, k, l;
#endif

こういう風に使いますよね。
でも、これだと宣言と不便ですよね。

#ifndef _MAIN_
extern {
#endif
int a, b, c;
char d, e, f;
struct _ST g, h, i;
class _CL j, k, l;
#ifndef _MAIN_
}
#endif

こんな感じに一気に extern できないのでしょうか?

381 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:03:01 ]
#ifdef MAIN
#define EXTERN
#else
#define EXTERN extern
#endif

EXTERN int a, b, c;

382 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:07:25 ]
>>381
うお、すげー!
Thanks!

383 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:13:24 ]
>>380-382
そんなウンコマクロが欲しくなるほどグローバル変数をばらまくんじゃねぇよ。

あと、インクルードガードに予約識別子使うな。

384 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:16:51 ]
>>383
断る。

385 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:17:28 ]
>>383
> 予約識別子
今知った。
指摘Thanks!

386 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:18:20 ]
>>383
これみてるとC/C++って糞だよな

387 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:19:32 ]
何を今更。

388 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:34:27 ]
int &a(void) { static int a; return a; }

プロはどうしてもグローバル変数が欲しい時はこう書く
真似していいぞ

389 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:37:19 ]
プロ・・・
クラスのメンバみたいにアクセスさせる形にすればいいだけなので
クラスを扱う言語経験者なら思いつくと思うけど



390 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:01:57 ]
オススメの命名規則(C++)を教えてください
ハンガリアン記法は過去のものみたいなので

391 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:02:31 ]
ドトネト式

392 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:08:16 ]
perlのuse constantはそれと全く同等のことやってるな

393 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:19:49 ]
FindFirstFile(path, &fd);
でD:\下のファイルの情報取得で

if(fd.dwFileAttributes!=0x00000002)

printf("%s\n", fd.〜)


としたんですけど
D:\のSystem Volume Infomatonというフォルダが
条件から外れてくれません

どうすれば隠しフォルダを避けることができますか?

394 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:22:21 ]
>>393
ビットフラグじゃね?

395 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:23:21 ]
>>390
www.possibility.com/Cpp/CppCodingStandard.html#descriptive

396 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:43:24 ]
/* 個人データ */
typedef struct{
char name[100];
double height;
double weight;
}member;

int main(void) {
member *ma;
int a=5;

if ((ma = calloc(a, sizeof(member))) == NULL) {
puts("calloc error");
exit(1);
}


カロックのところでエラーになるんだけどなんでかな?

397 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:50:09 ]
>>396
ヒープが足りんのだろう。
戻り値の仕様ぐらい読め。

398 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:51:45 ]
>>396
ライブラリを使うためのヘッダのインクルードが無い。
中括弧がいっこ足りない。

399 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:51:57 ]
>>396
出ませんが
ただ '}' が一つ抜けています



400 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:52:43 ]
ああ #include <stdlib.h> が抜けてるとかいうオチ?

401 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:13:45 ]
返信はやっ!

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10523.c

全部はりつけてきました しゅくだい

データは
2
TARO 170 64
ICHIRO 180 54

とかで入ってます
1行目に人数

402 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:21:38 ]
動かすの面倒なんでエラーメッセージ張ってくれ
callocってヒープから取るんだろ
doublex2 charx100(正確には101)とアライメント入れてもそれほど大きくないしなあ

403 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:26:35 ]
>>401
fscanf() のエラーもチェックしろ。
calloc() のエラーとは関係ないだろうが、 "%lf" に渡す引数は double じゃなくて double* な。
やっぱりヘッダのインクルード足りないし。

404 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:38:26 ]
>>403
しゅくだいなんだけど,ヘッダのとこは変更できないのよ・・・
ここに解答を書くってところだけ

ヘッダのインクルードなしでどうすればできるかなぁ

405 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:40:59 ]
>>404
動かすためにとりあえずヘッダ入れて
確認ができたらはずせばいい

406 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:48:47 ]
コピー多いな
文字列へのポインタ持ってポインタソートした方がすっきりする

407 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:05:31 ]
>>405
ヘッダ入れたらコンパイルできたけど,実行するとフリーズする・・・

408 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:44:46 ]
>>403
fscanfのとこの&でしたorz

ありがと(^ω^)

409 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 06:42:23 ]
www.not-enough.org/abe/manual/ray-project/cc.html
にあるレイトレーシングのソースコードをコンパイルしてみたのですがエラーが出てしまいます
codepad.org/fErUOLbG

どこをどうすればよいのでしょうか?
お助けください。



410 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:12:43 ]
>>409
codepad.org/m4SeoRfu

正しいかどうか知らんよ
しかし基本的なC++文法エラーを犯しているなこの作者は

411 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:16:11 ]
g++の拡張文法を使っているのかもしれない
ポータビリティを考えるなら標準C++に従って書いた方がいいね

412 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:50:32 ]
>>410
コンパイルしてちゃんとppmファイルを得ることが出来ました
ありがとうございました!

413 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:05:09 ]
超初歩的な質問で恐縮なんですが
CとC++ではCを先に学んだ方がいいんですか?
それとおすすめのサイトとか書籍があったら教えてもらえませんか?

414 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:08:20 ]
>>413
歴史をなぞるなら C から。
何か早く作りたいものがあるなら C++ からのほうが早いかもしれない。
ただし C に由来する落とし穴も多く残っているので、危ないかもしれない。

どっちからと考えずに、必要なときに必要な情報を確認しながら学ぶのが
おすすめ。

お勧めサイト。
www.google.co.jp/

415 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:11:04 ]
>>413
プログラミングしたことあるの?


416 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:11:48 ]
C++入門といってもクラスやSTLは後半!とか続刊!とかの入門書なら
内容はCとかわらないよ。


417 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:15:19 ]
あと面倒なのが最近はunicodeベースでコンパイルしちゃう物があるのに
古い標準関数はマルチバイトベースだったりととにかく古いだけあってめんどくさい>C/C++

418 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:15:25 ]
>>414
特に急ぎ足では無く、ゆっくり学ぼうと思ってるんでCからいこうと思います。
ググるのは大切ですね、しかし紹介されてるサイトや書籍があまりにも多いので戸惑います。

>>415
すごい勢いでド素人です。

419 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:17:25 ]
>>417
CとC++はわりと古いから、やり難い事があるという事だけわかりました!・



420 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:20:05 ]
>>413
お勧め書籍。
www.stroustrup.com/Programming/

421 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:20:11 ]
C++を学びたいならC++から
Cも学びたいからCから
C++をやるとCなんて馬鹿らしくてやってられないから

422 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:25:03 ]
>>420
おぅふ・・・なんかすげぇのきた。これは理解できそうにない

>>421
++というだけあって発展形なんですね。


423 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:37:34 ]
>>422
> ++というだけあって発展形なんですね。
今もC++はC言語のコードを(割と互換性があるので)使える。
でも厳密な互換性じゃないので使えないこともある。

424 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:38:41 ]
>>418
windowsしか使わないなら、C#あたりからやった方がいいよ
C/C++はなかなかソフトが完成しないから嫌になるし、初心者には難しい

425 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:43:20 ]
>>424
> windowsしか使わないなら、C#あたりからやった方がいいよ
いや、俺の意見としては
C#だけは止めた方が良い。
> C/C++はなかなかソフトが完成しないから嫌になるし、初心者には難しい
そんならP言語(Python, Pascal, PHP)をやれば良いと思う。
Rubyはよーしらんが。

426 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:43:29 ]
>>423
なるほど!参考になります。

>>424
#ですか、比較的敷居が低いんでしょうか。
まずそれから弄るのもいいかもしれませんね、ありがとうございます。

427 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:45:23 ]
qmakeとcmakeって何が違うわけ
makeファイルを作っているだけなのか

428 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:46:22 ]
まぁC#使っても、あれは出来ないだの、これはC経由しろだの、あるけどな。

429 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:47:41 ]
C#使うくらいならJavaでいいじゃん



430 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:50:08 ]
C, C++をやってから、GCのありがたみを感じるべき

431 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:51:47 ]
>>428
API使えるしまあいろいろ方法はあるよ
C#->C++に戻ってみるとC#で当たり前に使ってる部品がなくて自作することになったり
文字コード関連ではまるよりよっぽどいい






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<160KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef