[表示 : 全て 最新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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


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


212 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 02:15:22 ]
gcd(gcd(x, y), z);

213 名前:デフォルトの名無しさん [2008/11/10(月) 19:33:43 ]
¥nで文字数があわなくて1日中悩んでいたが
¥r¥nかよ!
ゲイツのバカヤロー!

214 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 19:58:35 ]
>>213
何をいまさら。 UNIX原理主義者は始末に終えんな。

それは、デジタルリサーチのCP/M-80(CP/M-86)との互換性を保つために
そうなっている。 文句があるなら、墓の下で眠るゲイリーキルドールに
言え。

ちなみに、OS-9の行末コードは'\r'のみだ。

215 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 20:31:53 ]
タイプライターに文句いえ

216 名前:デフォルトの名無しさん [2008/11/11(火) 07:09:03 ]
初歩的な質問なのですが、
staticはどう言った変数や関数に付ければ良いのでしょう。
staticの働き事態はわかるのですが・・・

217 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 08:44:01 ]
>>216
・関数
外部に公開しない全ての関数につける。
単一ソースファイルでプログラムを作るのなら、staticをつけないのはmain()だけでいい。

・変数
自動変数で事が足りない場合。
関数外部で宣言したい場合で、外部に公開する必要がない場合。

218 名前:デフォルトの名無しさん [2008/11/11(火) 12:09:23 ]
C++でビットマップを表示するのに、("ファイル名")ではなく(variable)を使用するにはどうしたらいいでしょうか?

例:
String^ variable = "C:ファイル名";
Bitmap^b = gcnew Bitmap(variable); // エラー

219 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:04:54 ]
C++/CLIは別スレへ

220 名前:デフォルトの名無しさん [2008/11/11(火) 15:47:57 ]
コンパイルをすると
_declspec(align('16'))の仮引数は配置されません
とエラーが出てしまいました。vectorのせいだと思うのですが、このエラーは
どういったときに出るのでしょうか・・・




221 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 17:35:36 ]
Ubuntu 8.10 で手持ちの ANSI C プログラムをコンパイルしようとしたら、
usleep が無いと言われたのですが、usleep は unistd.h に入ってるはずですよね?
ちなみに Darwin の cc でコンパイルしたときはうまくいきました

/usr/include/unistd.h をみてみると

#if defined(__USE_BSD) || #defined (__USE_XOPEN_EXTENDED)
...
#endif

で囲まれてました。そこで cc に -D__USE_BSD オプションをわたしてみたものの
やっぱり定義されてないと言われます。
ubuntu の cc で usleep を使うときはなにかしらやり方があるのでしょうか?

222 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 17:49:13 ]
www.linux.or.jp/JM/html/LDP_man-pages/man3/usleep.3.html
> POSIX.1-2001 では、この関数は過去のものと宣言されている。代わりに nanosleep(2) を使うこと。
> POSIX.1-2008 では、 usleep() の規定が削除されている。

とか書いてあるので、代わりに nanosleep を使ってみたらどうだろう

223 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:07:14 ]
>>221
ansi cにusleep()などない!

224 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 23:26:53 ]
>>218
まさかとは思うが、"C:\\ファイル名"とかいうオチじゃないだろうなw

225 名前:221 mailto:sage [2008/11/12(水) 09:58:31 ]
>>222
情報どうもです。
とりあえず
#ifndef __USE_BSD
# define __USE_BSD
# include <unistd.h>
# undef __USE_BSD
#else
# include <unistd.h>
#endif

としてその場をしのいだんですが、そのうち nanosleep を使うように書き直したいと思います

226 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 03:21:41 ]
メモリリークを調べるため_CrtSetDbgFlag関数を使おうとして
以下のように書いたのですがリンクエラーが出ます

#include <crtdbg.h>
 ・
 ・

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// メモリリーク検出
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
 ・
 ・
 ・
}

エラー内容
GameT error LNK2019: 未解決の外部シンボル __CrtSetDbgFlag が関数 _WinMain@16 で参照されました。

他にも何かインクルードする必要がありますか
開発環境はVS2003で、OSはWinXP_SP3です

227 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 08:05:07 ]
ゲ製板からの出張乙
リンクエラーと自分で書いてるだろ
するべきことはインクルードではない

228 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 12:54:30 ]
リリースビルドだったりしてな。

229 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:37:24 ]
2003にあったっけ?

230 名前:226 mailto:sage [2008/11/14(金) 23:40:50 ]
>>227
なぜゲ製板とわかるのでしょうか

>>228
DebugかReleaseのとこですよね
Debugにしています

よくわからないので新規プロジェクトで試したらできました
これに少しづつ作ったものを貼り付けていって原因を探してみる



231 名前:デフォルトの名無しさん [2008/11/15(土) 23:28:04 ]
不特定多数のデータを受け取る際に、スペースで区切りながらそれらを配列に格納するにはどうすればよいのでしょうか。
例として、
「2 3 5 6」
「2 3 1 3 4 5 2」
というスペースで区切られた数があり、これらをそれぞれ別の配列に格納したいのです。
入力は
2 3 5 6(ここでエンター)
2 3 1 3 4 5 2
となります。
コードと一緒に解説してくださるとありがたいです。

232 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 00:16:28 ]
つ[strtol()]

233 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 00:52:12 ]
すいません。
C++で、コンパイラのように構文解析をする処理などを勉強できる書籍はないでしょうか?
プログラム板に初めてくるので、このスレでいいのか判断に迷いますが、、、
よろしくお願いします。

234 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 01:03:27 ]
コンパイラの教科書の最初の方に載ってるよ

235 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 01:12:08 ]
アサーションをインラインで宣言して、どこの行でエラーが起こったか知りたいです。
以下の様に書いてみましたが、インライン関数MUSTOKの行数でエラーが起こった、もしくは、assert関数がある行が
表示されてしまいます。できればこの関数MUSTOK(0==1);がある行が知りたいのですが、どうしたらよいでしょうか?

実行環境
gcc バージョン 4.2.4 (Ubuntu 4.2.4-1ubuntu3)
ubuntu8.4
ソースコード
==
#include <cassert>
#include <iostream>
inline void MUSTOK(bool cond)
{
if(!cond)
{
std::cout<<"file=:"<<__FILE__<<"\tlie=:"<<__LINE__<<std::endl;
}
assert(cond);
}
int
main(int argc,char *argv[])
{
MUSTOK(0==1);
return 0;
}
==
実行結果
file=:assert_test.cpp lie=:7 assert_test: assert_test.cpp:9: void MUSTOK(bool): Assertion `cond' failed. Aborted



236 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 01:21:33 ]
>>235
MUSTOKをマクロで実装するしか。

237 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 01:23:50 ]
>>235
backtrace,backtrace_symbolsってのを使うとどこから呼び出されてるか表示出きるみたいだよ。

238 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 10:42:04 ]
>>234さん
233です。ありがとうございました。
書泉に行ったときに探してみます。

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 ]
マルチ失せろ。






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

前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