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


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

C/C++小心者スレッドPart1



1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ]
プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは>>2以降。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・ぐぐる
 ・マニュアルで探す 
 ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(なるべくそのままで)
 ・実行環境(OS名、コンパイラ名)
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ 
相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって小心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


宗教的な話題は禁止します。


239 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 12:33:25 ]
Cのプログラムで、他のプログラムhogeをコマンドラインパラメータ付きで実行し、
その実行の終了を待って、hogeのmain関数が返した値を取得したいのですが、
どうすればよいでしょうか?標準のC関数だけでできますか?

240 名前:デフォルトの名無しさん [2008/11/16(日) 12:40:35 ]
できません。winAPIでやってください

241 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 12:50:22 ]
Cで、引数で指定されたファイルを、system関数を使って、
メモ帳で開くにはどうすればよいでしょうか?
ご教授お願いします。

242 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 12:58:13 ]
system("メモ帳の場所 引数で指定されたファイル")

あとは
www.google.co.jp/search?q=C%8C%BE%8C%EA+system
から探しなー

243 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:06:03 ]
>>240
馬鹿も休み休み言ってください。

>>239
一般的に、アプリはsystem()で起動すればmain()の戻り値を回収できる。
但し、GUIアプリなどで動いているにも拘らずすぐに戻ってきてしまう場合は、
コマンドインタプリタ(command.comとかbashとか)の支援が必要になる。
コマンドインタプリタを介在させたくなければ、そこでやっと>240の言うようなAPIの出番となる。

>>241
system("notepad any.txt")でいいとして、そのテキストファイル名を可変にしたいなら
文字列を組み立てればいい。

244 名前:デフォルトの名無しさん [2008/11/16(日) 13:36:09 ]
リソースから拾ってきた文字に対して置換ってどうやってる?
たとえば
 「File %1 is too long.」  ⇒ 「File "C:\hogehoge.foo" is too long.」
みたいな。

変換先文字列分拡張して memmove で必死に頑張ってもいいんだけど、
ATL/WTL 使ってるのでそれらのライブラリで便利なのがあればいいなぁと
思って…

教えてエロい人><

245 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:39:01 ]
>>244
%1を適当に変換してから、sprintf()

246 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:40:18 ]
置き換えしたいところを%sとかにして、sprintf使うとか。

247 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:40:47 ]
boost::format使えば楽じゃね。



248 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:48:57 ]
>>245、246

そうか、%1 じゃなくて別にいいんだもんね。
「File %s is too long. (sizeof: %s. current: %s)」
とかにして順番に sprintf の引数に積めばいいのか!

>>247

STLワカンネ・・・orz
でもせっかくなので勉強してくるYO!


即レスthx!!!
みんな優しいね。大好き。

249 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:02:14 ]
FormatMessage の立場がねーな、おい。

250 名前:デフォルトの名無しさん [2008/12/17(水) 02:15:02 ]
入力によって処理を変えるプログラムを作っていて、予期せぬ入力があった時メッセージを表示して、もう一度入力させるプログラムを作っているのですが、2度同じ表示が出てしまいます。

for(;;)
{
scanf("%c",&input);
if(input == 'S' || input == 's')
{
printf("GAME START!¥n);
}

else if(input == 'Q' || input == 'q')
{
printf("GAME QUIT¥n");
return 0;
}

else
{
printf("input failed¥nPlease input again¥n");
}
}

どこを変更すれば、2度表示されなくなるでしょうか。
よろしくお願いします。

251 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:35:15 ]
たぶん改行('\n')が残っているんだと思うよ。
scanf()の後に、
if ( input != '\n' ) {
while ( (c = getchar()) != '\n' ) {
; /* 意図した空文 */
}
}
こういうの追加しておくとか。

scanf()で文字ではなく文字列受け取って、最初の要素だけ利用するとか。
fgets(,,stdin)で、上記と同じようにするとか。

 ゲーム作っているみたいだから、がんばってとしか言えないけど。

252 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 07:48:35 ]
const で変数宣言する必要性を教えて下さい

253 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:46:16 ]
>252
・誤って内容を変更するコードを書いた場合エラーになる。
・(条件が揃えば)定数として使える。

254 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 08:59:45 ]
>>251
弄っていたら、
scanf("%c",hoge);

scanf("%s",hoge);
にしたら出来ました。
ありがとうございました。

255 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 08:36:18 ]
質問です。

後処理さえすれば、コンストラクタで例外を投げても良いと聞いたんですが、
自分自身(this)がリークすることはないんでしょうか?

256 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 11:35:37 ]
ないよ。

257 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 11:55:39 ]
ありがとうございます。
これで安心して例外投げれます。




258 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 12:10:50 ]
>>255
これだね。
www.kijineko.co.jp/tech/superstitions/memory-leak-at-dynamic-creation-fail.html

259 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 15:58:08 ]
大変参考になるリンクどうもです。
スッキリしました^^

260 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 16:07:06 ]
専用メソッド作ってた自分がバカみたいでした……

261 名前:250 [2008/12/19(金) 17:56:15 ]
入力した数*数の二次配列に、任意の文字を入れて、それを.txtとして出力するプログラムを作っているのですが、
scanfで各配列に入れた文字を書き込むにはよいのですが、a[i][j] = '*';という入れ方で書き込むとtxtファイルが開けなくなってしまいます。
何が問題なのでしょうか。
よろしくお願いします。

262 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:21:57 ]
>>261
ソースと結果を示してください。
fopen() を使っているなら perror() してみるとか。

263 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:40:07 ]
>>261
 たぶんfprintf(fp, "%s", a[i]);とかやって、ナル文字('\0')が見付からなくてメモリの適当なところまでファイルに書き込んだためにメモ帳などでテキストファイルとして開けない。
とエスパーしてみる。書き込みがSJISっぽいから、Windowsと仮定するけど。
 最初から、バイナリで書き込んでバイナリで読み込むといいかも知れない、ゲーム作ってんだろ。
fwrite(a, sizeof(a[0][0]), sizeof(a), fp); foo型配列a
fread(a, sizeof(a[0][0]), sizeof(a), fp); foo型配列a
その代わりメモ帳では開くなよ。開いてもなんとかなるかもしれないけど。

264 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 18:50:18 ]
バイナリエディターで覗くというのも手だな。
ファイルサイズが想定以上なら263で正解だと思う。

265 名前:250 [2008/12/20(土) 19:20:53 ]
>>262
すみません。改行が多すぎるそうで、書き込みができませんでした。

>>263
ありがとうございます。
バイナリで開いて書き込んだら、できました。

>>264
そのような確認の仕方もあるのですね。
勉強になりました。ありがとうございました。

266 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 09:35:35 ]
ちょっと質問したいんだが
コンストラクタで例外投げるのってどういう時に使うんだ?
分岐にでも使うのか?

267 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 14:08:45 ]
>>266
エラー通知に決まってるだろ。コンストラクタでも普通の関数でも同じ。



268 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 21:19:49 ]
コンストラクタだとエラーを返せないから例外を使う。

269 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:39:30 ]
ttp://gimpo.2ch.net/test/read.cgi/bobby/1233164250/l50

168 名前:よしよし ◆2U93Cmvv1o [sage] 投稿日:2009/02/10(火) 07:02:42 ID:???
おいハゲどもポインタの質問だ

------
p は指し示す先のアドレス
&p はポインタ変数pそのもののアドレス
*p は指し示す先の値
------
だよな?なのにポインタ配列の解説のところで
------
data+i がそのもののアドレス
data[i] が指し示す先の値
*(data+i) が指し示す先のアドレス
------
ってことになってんだよ
俺は本の書き間違えだと思って実際にプログラム打ち込んで
コンパイル、実行してみたらあってるんだよ
どういうことだ説明しろ
「*」はポインタが指し示す先の値を出力するんじゃねーのかよ

270 名前:デフォルトの名無しさん [2009/02/10(火) 18:43:21 ]
169 :おいら名無しさんヽ(´ー`)ノ:2009/02/10(火) 09:02:32 ID:???
3番目の"*(data+i)が指し示す先のアドレス"は間違ってるな。
ハゲの理解が正しい。どこの糞入門書だ。さらせ。

171 :よしよし ◆2U93Cmvv1o :2009/02/10(火) 11:50:38 ID:???
>>169ありがとう。ハゲじゃないが言ったようにコンパイルすると
結果は入門書どおりになるんだよ。俺が何か間違っているはず。
#include <stdio.h>
int main (void){
char* data[4]={"par","birdie","eagle","albatross"};

int i;
printf("data[i]    値    アドレス :ポイント先の値\n");
for(i=0;i<4;i++){
printf("data[%d] %10d %10d %10s\n",i,*(data+i),data+i,data[i]);
}
return 0;
}
-------------------------------------
C:\Source>point.exe
data[i]    値    アドレス :ポイント先の値
data[0] 4235576 1245052 par
data[1] 4235580 1245056 birdie
data[2] 4235587 1245060 eagle
data[3] 4235593 1245064 albatross
-------------------------------------

271 名前:デフォルトの名無しさん [2009/02/10(火) 18:44:48 ]
ttp://gimpo.2ch.net/test/read.cgi/bobby/1233164250/

177 名前:よしよし ◆2U93Cmvv1o [sage] 投稿日:2009/02/10(火) 14:48:08 ID:???

要するに
int i=5;
int *p;
とかと
char* data[4]はそもそも違うっちゅーことだな?

*pってのは「指し示す先の値」のことだけど、
* data[4] ってのは「指し示す先のポインタ」のことなんだな?
* data[4]様はポインタ様*(data + i )やdata[i]のさらに違う場所
(メモリの)にいる奴なんだな?


メモ-----------
*(data + i )とdata[i]はまだポインタなの。

「ポインタの配列」→「ポインタ」→「指し示す先の値」

* data[4]→ *(data + i )とdata[i]→ *(*(data+i))または*data[i]

char* data[4]=
--------------


272 名前:デフォルトの名無しさん [2009/02/11(水) 08:43:54 ]
小心者スレということなので投下してみます。
VC++ Expressでウインドウアプリを作っています。

(ファイル A.h)
class A{
public:
A();
vertial ~A();
};

(ファイル B.h)
#include ゙A.h゙
class B:public A{
public:
B();
~B();
};

(ファイル C.h)
#include ゙A.h゙
class C:public A{
public:
C();
~C();
};

この時、Aが再宣言されたとか、Aが未定義だとかでコンパイラに怒られます。なぜ

273 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 08:56:55 ]
vertial ~A();

274 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 09:47:54 ]
if文をやっと覚えたところでニコニコ動画のビットレート計算
というのがあったのでこれを参考に簡単なプログラムを作っていたのですが
コンパイルエラーはでないのですが、最後の部分を入力するとエラーで落ちます
何がいけないのでしょうか?

Source PW:c
www1.axfc.net/uploader/He/so/193956

275 名前:274 mailto:sage [2009/02/11(水) 10:01:04 ]
最後のif文で演算子が抜けていますが
ここは >= にしていました

276 名前:274 mailto:sage [2009/02/11(水) 10:02:21 ]
補足
>最後の部分を入力
プログラムを実行して順番に進んでいって最後の部分を入力

277 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 10:41:14 ]
>>274
scanf("%d", movieb);



278 名前:デフォルトの名無しさん [2009/02/11(水) 13:03:11 ]
>>273
virtual A();の間違うぃ
スマネm(_ _)m


279 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 13:25:47 ]
そういうくだらない間違いをする奴がレスに何を書こうとも、
実際のコードをきちんと再現できているとはとても思えない。
従って、再現するソースとエラーメッセージを貼るか、帰れ。

280 名前:デフォルトの名無しさん [2009/02/11(水) 13:41:40 ]
何を偉そうに

そっから推測できる間違いが指摘できねーんならそれこそカエレだ

281 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 13:48:51 ]
>>280
別にあなたが指摘なさっても宜しくってよ。それとも、あなたご自身が指摘もできないで書いてらっしゃるとでも仰るのかしら?

282 名前:デフォルトの名無しさん [2009/02/11(水) 14:15:15 ]
はいそうです

283 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 14:17:36 ]
知らレス

284 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 14:40:16 ]
>>272
こうじゃね?

#ifndef _A_
#define _A_

class A{
public:
A();
virtual ~A();
};

#endif

285 名前:デフォルトの名無しさん [2009/02/11(水) 15:15:46 ]
>>284
神!


正直、#include ゙A.h゙してれば逝けるとおもてました。
(BCCでは#includeしてれば逝けてたから)
ありがとうございますた。


286 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 16:30:16 ]
インクルードガードぐらい常識として知っておけ

287 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:54:22 ]
>>284 予約識別子死ね。



288 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:22:41 ]
>>277
scanf("%d", movieb);
という箇所が間違っているということでしょうか?
または、ある部分を上のように書き直せということでしょうか?

289 名前:288 mailto:sage [2009/02/11(水) 20:28:46 ]
解決しました
&が抜けているということですね
スレ汚しすみませんでした

また、回答ありがとうございました

290 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:31:43 ]
>>287
_A_ はプリプロセッサの識別子。C/C++の予約識別子には該当しないよ

291 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:40:50 ]
>>290
ライブラリの実装に _A_ 使ってるところがあったらぶっ壊れるだろうが。

292 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:45:53 ]
あたま悪いの?

293 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:54:32 ]
>>290
何を根拠にそんなことを言うのかね。

ISO C (draft n1336)
7.1.3 Reserved identifiers p2 にはマクロ定義についても明示的に禁止されてる。
> If the program declares or defines an identifier in a
> context in which it is reserved (other than as allowed by 7.1.4), or defines a reserved
> identifier as a macro name, the behavior is undefined.

ISO C++ にはマクロ定義について明示的な記述は無いようだけど、 >291 があるから
やっぱりダメだろう。

294 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:11:00 ]
どうせ、VCかgccしかつかわないもん。

295 名前:デフォルトの名無しさん [2009/02/12(木) 05:49:25 ]
#ifndef _A_
#define _A_
  :
#endifと、
#pragma onceは同じ意味じゃないの?

296 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:55:30 ]
いいえ、後者は一部の処理系でしか使えません。

297 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:57:16 ]
>>295
VC厨はこれだから・・・



298 名前:デフォルトの名無しさん [2009/02/12(木) 07:53:33 ]
VC厨扱いしていただけるなんて光栄でごぜえます。

299 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 09:08:54 ]
>>297
gccでもCodeWarriorでも使えるし
PC向けのメジャーなコンパイル環境で使えないのはbccくらいなんだが
ポータビリティ意識して書くのは当然としても、
>VC厨はこれだから…
ってどういうこと?


300 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:48:59 ]
>>299
CodeWarriorってタダで使えるの?
wikipediaで見たらかなりのプラットホームをサポートしてるみたいだから
使ってみたいのだが

301 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 00:16:57 ]
>>300
コンシューマゲームの開発やってると、無料でダウンロードできる場合もある
俺が使ったのはこのパターン。
すまんが小売してるかどうかは知らん。
とりあえず使いにくいことは確か。

302 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 00:18:57 ]
>>299
#pragma onceがおそらくVC発祥だからでしょ。
#ifdef _MSC_VER >= 1020で囲むコードを良く見かけるし、
まだまだVC限定のイメージが拭いきれていないと思う。

303 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 09:03:50 ]
>>302

> #ifdef _MSC_VER >= 1020で囲むコードを良く見かけるし、
すまんが意味がわからない。
コンパイラによってifdefとpragma onceを切り替えるコードがあるって話?(なわけないか)
VC限定のイメージとの関係は?


304 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 09:08:11 ]
つーか、ifdefで比較演算ってなんだよw
とは思った。

>>303
pragma onceは厳密には全く違う意味に解釈される可能性もあるから、
使えるコンパイラを限定することに意味はないわけでもない。

305 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:55:58 ]
>>304
意味ないだろ
それならifdefだけで十分なんだから。

306 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:26:48 ]
>>305
古い MSC には #pragma once がなかったんじゃないの?そのための比較だと思うけど。

307 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:59:56 ]
>>303
ごめん間違えた。正しくはこんな感じ。見ない?
#if _MSC_VER >= 1020
#pragma once
#endif



308 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 18:14:42 ]
>>307
全く答えになってないんだがww

309 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:15:10 ]
素直にインクルードガードしとけってことだ!!

310 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:50:41 ]
#ifndef _strcpy
#define _strcpy
int _strcpy(){return 0;}
#endif

311 名前:赤西仁 [2009/02/13(金) 22:57:03 ]
1年間悩んでます。お力をお貸しください。

アークザラッドUというタイトルのゲームの、ゲーム画像(歩行画像など)を抽出したいのですが、
かれこれ1年ほど経ちますが、なかなかうまくいきません。
*もちろん抽出した画像は個人範囲内で利用するつもりです。

◆試してダメだったこと

 ネット上からダウンロードできる、ありとあらゆる抽出系ツールを試した。
 (ちなみに他のゲームはほとんど抽出可能)

◆教わったこと

 ・アークザラッドUは独自の画像形式を使っているから抽出できない。
 ・PS上で表示されてるということは絶対に摘出はできるはず。

◆抽出は不可能ではないということを知ったとき

 2ちゃんねるで質問したところ、
 ある方が実際にキャラクターの歩行画像を抽出して
 私が立てたスレにアップしてくださいました。

スクリーンショットじゃ嫌なんです。どうか皆さん、お力をお貸しください。

312 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:44:15 ]
マルチ失せろ。

313 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:00:30 ]
>>306
コンパイラの種類/バージョンチェック云々以前の話なんだが、わかってるか?
VCでifdefやifndefが使えないわけじゃあるまいし、
あえてpragma onceを混ぜる理由が無いだろ


314 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:05:42 ]
普通のインクルードガードと307みたいなVC限定でpragma onceを組み合わせて使うコードの存在が、
#pragma onceがあたかもVC限定かのように思わせるのではないかと言いたいんだけど

315 名前:313 mailto:sage [2009/02/14(土) 01:00:52 ]
>>314
>>306なの?
横レスで他人へのレスをされても噛み合わないレスしか返せないぞ

316 名前:306 mailto:sage [2009/02/14(土) 04:46:01 ]
>>313
マクロによるインクルードガードでは2回目もファイルを開いて少なくともインクルードガードを
読む必要がある。 #pragma once なら2回目以降ファイルを開かずにスキップするような実装が
考えられる。

そのため、インクルードガードを置いて移植性を持たせつつ、特定のコンパイラでの
コンパイル時間を短縮する目的で #pragma once を置くことが考えられる。

en.wikipedia.org/wiki/Pragma_once

317 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:32:24 ]
おまいら
                       ._,,,,,,。,,、       广'x、   ,,、._    」'゙''i、
     ,,,,,_.,,,,、广゚┐     .,,,v―冖"~゛   ゙'i、      .ト  ,|,_  riゃ .}   .,i´ '冖i、
     .] ` f゙,l° ,i´     .゙l_ .y-┐ 'や'゙"゙’    _,,,vr"   .゙ト.゙'x,,,,广 ィ・'''゙~  .._,,v・゚ヒ''''・x、
     入、rУ ,iレ-v,,,、   .,r°."'''l゙  ,|√゙゚'i、   匸 ._  .y・'゙゚,,,v―-,  .:゚ーa  .√ ._,rll_  :}
  .,r''y|゛゙゙l..,i´ ,i"゙l,  .゙ト  ,r°,,,  ..,  ._,,vぐ    .`√ .,i´l广._,,,,,,,,i´  ,,i´ ,i´ ,「 .:| .~''''″
 .r″ .|゙l、 “ .,i″.yi入-イ  il∠i、.` .,メ|  |   」'ト   .,,i´ .,i´ ,, ̄      .[  .,i´.,,,,,,! .]_
 .゙l_,i´,レ  .'_,,,,レ ~''┐   .,r°.,i´.|  .|   ,l゙ :゙l、 ,,i´ ,i´ l゜.゚L__   .:―ヤ゚″_   :~''=、
   .,r″.,x=,,      .,i´  ,x'".,,x'″ .゙l、 ゙冖''″ .] |  .,i´ .゙l,    .~1   .゚L '゙〃 ,n, .,,}
  .,l彡'''″  .゙~"''''''''''"゜  .テ''~゛    .:゚'―---―・° ―″   .~''¬―'″    .:゚=_,r



318 名前:デフォルトの名無しさん [2009/02/16(月) 17:47:44 ]
皆様こんばんは。
VC++ ExpressEditionでのリーソスの事について質問させてくダサイ。

(Resource.h)
#define GAZOU000 1000
#define GAZOU001 GAZOU000 + 1
   :    :
   :    :
#define GAZOU030 GAZOU001 + 030

(Resource.rc)
GAZOU000 BITMAP "bmp000.bmp"
   :    :
   :    :
GAZOU030 BITMAP "bmp030.bmp"


これでビルドしようとしたら
.\Resource.rc(5) : error RC2135 : file not foundみたいなのが
ズラズラズラ〜〜〜っと出てきました。

仕方が無いのでResource.hの、
#define GAZOU030 GAZOU000 + 30みたいに記述しているのを
全部#define GAZOU030 1030のように書き直したらビルドできました。

なぜ最初の書き方でダメだったんですか

319 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:07:15 ]
最初の書き方だと、
GAZOU001 BITMAP "bmp001.bmp"
のGAZOU001をマクロ展開すると、
1000 + 1 BITMAP "bmp000.bmp"
になるだろ?リソースファイルはスペースを区切りと扱うので、正しく認識できなくなる。

320 名前:デフォルトの名無しさん [2009/02/16(月) 21:57:46 ]
>>319
えー!そうなんですか〜
初歩的ミスだったのですね。お恥ずかしい・・・

でも、お蔭様で、またひとつ勉強になりました。
ありがとうございました。

321 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:04:41 ]
>>316
大抵の場合、フルビルドを立て続けにやることはなく、プリコンパイルヘッダの効果で意味がないと思われ

322 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:37:19 ]
google C++コーディングスタイルに、
cppファイルの無名名前空間の使用は推奨されてたのですが
理由はなぜでしょうか。cppファイルは別に何をやってもいいような。
cppファイルですらusing使うのは駄目なの?

323 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:46:37 ]
>>322
ほかのcppファイルから見える必要のないものを隠すために使えという意図だと思う。
同じ目的で、名前空間上のstaticも使えるけど、
一般的に、この意味ではstaticより無名名前空間のほうが推奨されている。

324 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 23:57:52 ]
static指定のかわりですか、なるほど。
名前空間上の関数定義だったら別だけど
クラスのメンバ定義だけしか書かない分には
気にしなくてもいいのかな。

>staticより無名名前空間のほうが推奨されている。
これは等価だと理解してましたが、なぜでしょう。
どっちも他のファイルからは見えないのに?

325 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:39:05 ]
>>324
もともとC/C++のstaticに静的記憶期間とファイル内って2つ意味があるのはややこしいから、
後者の意味を分離しようという動機で無名名前空間が導入されたという経緯がある。
だから大事に使ってあげてねと言うわけ。

326 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 03:30:11 ]
>>324
C++ ではオーバーロードやテンプレートの関係で、クラス名などもグローバルな定義の
識別に使われるので、関数や変数以外に class, struct, enum も別々の .cpp で同じ
名前空間内に同じ名前のものを定義するとマズイ。これが無名名前空間で解消できる。

327 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 02:20:15 ]
お題。

ISO/IEC 14882:2003とXLib、Win32APIの範囲内でスクラッチからエディタを作る。
Win32、XLibともに標準C++ライブラリとかぶる機能があるが、この場合
標準C++を優先して使う。
これは、少しでも移植性を高めるための努力と考えてほしい。
また、拡張性の担保ともなりうる。

これは時間かかるけど、やりがいあるよ?



328 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 02:56:40 ]
なんだコピペだったのか。

329 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 03:02:01 ]
まずISO/IEC 14882:2003がなんなのか調べるのめんどくせえから挫折
→XlibかWin32?どうせなら両立できるwxだろと意気込むがインストール失敗して挫折
→そもそも標準C++が分からなくて挫折
→努力なんかできなくて挫折
→わたるが死んじゃう!(自殺)

330 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 22:30:51 ]
すいません
CとC++を実践の中で学びたいのですが
なにを作ればいいか、というよりなにをその言語で作れるのか漠然として・・・
JavaやC#のようなオブジェクト指向言語ならイメージ浮かびやすいんですけど
コンソールだとコントロール等がないのでどうしても・・・

331 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:19:13 ]
C++もオブジェクト指向言語なんだが・・・

332 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 09:37:07 ]
つーか、好きにライブラリを選べばいいのがC/C++流。

333 名前:330 mailto:sage [2009/04/12(日) 10:24:27 ]
そういやC++もオブジェクト指向言語でしたw
まだイメージができないあたり、ライブラリの知識が不足しているようですね。

334 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 10:29:32 ]
ライブラリの前にオブジェクト指向と言語仕様の知識も不足してる

335 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 11:54:22 ]
それを言ったら情報工学の基礎から何から全部だろう
ポトペタでさくさく作っている間は必要のない知識だ

336 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 12:45:19 ]
なんだポトペタって。

337 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:33:18 ]
一覧からマウスで選択したコントロールをフォームに
ポトっと落とすとペタっと張り付く機能やそれを備えたIDEのこと



338 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:50:39 ]
Stringクラス的なものを参考すればいいんじゃね?
まさにコントロールじゃない目に見えないクラスオブジェクト。

339 名前:トミー ◆xb8eIST5.k [2009/04/25(土) 20:19:22 ]
>>182
ぼくもそれをダウンロードして使ってみました。
うまくいきそうです。
どうもありがとうございました!






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

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

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