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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:26:08 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.40【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1184717430/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

411 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 05:26:10 ]
ビット演算がうまくなるコツってないですかね?
全く使いこなせてないので、
他人のソース読んでて、使いこなせていると凄く羨ましいんですけれど。

412 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 05:27:47 ]
才能ないよ諦めた方がいい

413 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 05:37:52 ]
コラー!

414 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 05:49:50 ]
自虐し過ぎ

415 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 06:14:34 ]
>>411
グラフィックまわりをいじって変な画面効果とか作るのが楽しいかも
上達が見てわかるし

416 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 08:06:25 ]
>>411
エンディアンと変数型のバイト幅を意識すること。
算術シフトと論理シフトを意識すること。
コツっていうとこんぐらい?

フラグ的な使い方の話だったら、
必要になった時だけ使うのが良いんじゃないかなぁ。


417 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 08:08:28 ]
>>411
論理演算、真理値表、2進数⇔16進数変換。
この辺のキーワードを調べ使いこなせるようになるとずっと違うと思うよ。
例えばこんなの。
a b c r
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 x
1 0 1 x
1 1 0 0
1 1 1 1
こいつからrを求める式を導き出せれば一歩前進。

418 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 09:16:08 ]
皆さんアドバイス有り難うございます。
ビット演算は大事ですからね。
精進します。
>>417
グヌヌ。
難しいぞ。分かんないっす。

419 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 09:22:07 ]
プッ ヘボすぎ



420 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 09:29:14 ]
~(a^c)&b
こうですか?

421 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 10:04:58 ]
タンクローリーを運転する人に見えたのは俺だけでいい。

422 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 11:18:41 ]
int foo;
int bar;
bar = (unsigned int)foo & 0x0fffffff;
という事をしょっちゅうしているプログラムがあるんですけど、
どういう意図を持ってこの処理をしてるんでしょうか?
最初は、int型の変数をunsigned int型にキャストしてint型の変数に代入すると、
例えば-5が代入されてたら4294967291になるのかなぁと思ってたんですが、
そういう訳でもないみたいですし。


423 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 11:21:44 ]
>>422
意図については、そのプログラムを書いた人に聞くのが一番!

あと、もう少し基礎を勉強したほうが良いよ

424 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 20:27:31 ]
動的な配列を作る時は
int* a=(int*)malloc(sizeof(int)*10);
if(a==NULL)
みたいにしてポインタが有効かチェクしますよね?
二次元の配列を作る目的で
int** b=(int*)malloc(sizeof(int*)*10);
とやったら、この時も
if(b==NULL)
で、bが有効なポインタかどうか判断していいんですか?


425 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 20:31:19 ]
はい

426 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 21:12:36 ]
>>424
if(b==(void**)0)

427 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 22:36:27 ]
>>424
#include<stdio.h>
#include<stdlib.h>

#define X_SIZE 15
#define Y_SIZE 10

int main(void){
int x, y;
int **b;

b=malloc(sizeof(int*)*Y_SIZE);
if(b==NULL) exit(1);
b[0]=malloc(sizeof(int)*X_SIZE*Y_SIZE);
if(b[0]==NULL) exit(1);
for(y=1;y<Y_SIZE;y++) b[y]=&b[0][y*X_SIZE];

for(y=0;y<Y_SIZE;y++)
for(x=0;x<X_SIZE;x++) b[y][x]=y*X_SIZE+x;

for(y=0;y<Y_SIZE;y++){
for(x=0;x<X_SIZE;x++) printf(" %3d", b[y][x]);
printf("\n");
}

free(b[0]);
free(b);

return 0;
}

428 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 23:01:35 ]
>>426
キャストしたらダメだろ。
意味変わる。

429 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 23:07:24 ]
>>420
それでもいいけど、(b&~c)^aの方がシンプルだろう。



430 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 01:15:04 ]
a^b&~c ってなところか。

>>411
最低限の論理学の勉強をする。
ド・モルガンの法則とかは必須。

431 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 07:42:18 ]
#define NULL (void*)0
だから
ポインタへのポインタが"NULL"かどうかは
(void**)0で調べないといけない

432 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 08:20:03 ]
>#define NULL (void*)0
>だから
いいえ。

433 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 10:12:01 ]
世界中のC言語を使える人のコンピューターに対する理解度の高さの平均と、
世界中のJavaを使える人のコンピューターに対する理解度の高さの平均は、
どっちが高いですか?

434 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 10:16:53 ]
マルチ死ね

435 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 10:18:08 ]
>>433
スレ違い

436 名前:DEFORTの名無し [2007/08/18(土) 13:41:52 ]
ひさしぶりぶり
MinGWつかってみたけど微妙

437 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 13:47:02 ]
またお前か

438 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 14:28:50 ]
>>422
0x0fffffff でマスクってことは、下位28ビットが欲しいってだけじゃね。
あと、unsigned int へのキャストは無駄だな。

439 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 15:32:58 ]
>>431
どこからそんなデマを仕入れてきた?



440 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 16:02:21 ]
脳内

441 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 16:06:10 ]
新聞

442 名前:デフォルトの名無しさん [2007/08/18(土) 20:10:13 ]
ある特定のウィンドウがアクティブになった時に、そのウィンドウのメニュー内の
特定のコマンドを実行するようにしたいのですが、どのよう記述したら良いでしょうか?
具体的にはXSIとゆう3DCGソフトの「アニメーションエディタ/編集/オリジナルコマンド」
を自動実行させたいのですが、、、

宜しくお願いします。

443 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 20:13:48 ]
C/C++じゃなくてスクリプトで書けば?

444 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 20:16:44 ]
C/C++の勉強すれば分かるよ

445 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:24:05 ]
WSHとかの領域になるんかな?あっちの詳細を全部知ってるわけではないけれども

446 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:43:34 ]
new int[n]; ← このnのところは、何の型で渡すのか決められてますか?
intとかlongとか(負数はあり得ないので、unsignedでしょうか)

あと、Windowsの32ビット環境では、intとlongはまったく同じ型として扱っても問題ないですか?

447 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:45:47 ]
>>442
ウィンドウメニュー内の特定のメニュー項目が選択されたときって、
たぶん、WM_COMMANDとかのウィンドウメッセージが飛ぶと思うんだけど、
その具体的なパラメタを調べて、アクティブとかのイベント関係なく
直接呼んじゃだめなの?

もし、アクティブになると同時って条件をつけたいなら、
1)ウィンドウをアクティブにする
2)ウィンドウメッセージを送信する
っていうだけの簡単なプログラムを作るとか。

448 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:13:18 ]
>>446
特定の型には決まっていない。整数ならいい。
負の数になったら未定義動作。

int と long は違う型です。

449 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:30:05 ]
music8.2ch.net/test/read.cgi/musicjf/1187412818/72
おもしろいIDでた



450 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:32:34 ]
わざわざ他板のを持ってこなくてもいいんだよ

451 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:34:41 ]
>>448,446
>特定の型には決まっていない。整数ならいい。
C++の言語仕様の詳細は知らないけど、VCならsize_tでいいんじゃね
msdn2.microsoft.com/en-us/library/t48aek43(VS.80).aspx
msdn2.microsoft.com/en-us/library/ms859258.aspx

>int と long は違う型です。
これもVC(x86)の範囲内で同じようにつかえるかって質問なら、問題ないと思うけど
msdn2.microsoft.com/en-us/library/ms859270.aspx


452 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:36:23 ]
>>450
この板ID無いが。

453 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 01:57:33 ]
>>451
operator new 関数の第1引数は VC に限らず size_t 。
でもそれと new 式の配列要素数を表す式の型とは別。

サイズが同じだろうがなんだろうが int と long は違う型。
まったく同じ型として扱うのには問題がある。

454 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 03:13:14 ]
>>453
ごめん、1点分からないので、教えていただきたい。
とりあえず、>>446はVCの利用上(実装上)の制限が知りたいんじゃないの、
と思ったので、その観点だけで書いたのは自分の思い込みで、それで意見が
すれ違うのは仕方ないんだけど、

>特定の型には決まっていない。整数ならいい。
>でもそれと new 式の配列要素数を表す式の型とは別。
の箇所。
そうはいっても、ソースをコンパイルしてバイナリに落とす以上、コンパイラ定義かも
しれないけど、具体的な値の有効範囲ってかならずあるんじゃないの?
実際、MSDNの配列定義のサイズ指定の箇所では
0以上の整数型、ただしMicrosoft仕様では... としてsize_tに言及してるわけだし。

それにoperator new 関数の第1引数がsize_tに決まってるなら、size_t以上の値を
記述して受け入れてくれるコンパイラがありそうにないので、
その意味でも「整数ならいい」ってのはあいまいな感じがする。

なので、「整数ならいい」ってのは純粋に言語仕様の話として語っているのか、
それとも、コンパイラの実装やソース記述上の制限を語る場合でも同じ回答
になるのか、気になって眠れなくなりそうなんで、正確なところが知りたいんだけど。

455 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 03:20:37 ]
 
   ________    
     /   |         
    /__  |     
   /   /.  |-―‐.                
  / \ /     |              
 /  ./      |          
   ノ        ヽ__」    


   |
 .―┼‐フ  
   |/   
  /|/ ̄ ̄ ̄\ 
 //|       | 
   |       |  
   |     (二X

456 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 03:39:56 ]
>>454
現行の規格ではだいたい >>453 みたいなことしか言えない。ある意味
これが正確なところ。

new とは別に、各処理系が定めるべきいろいろな数値の上限の中に
「オブジェクトのサイズ」というのがある。配列オブジェクトもこの制限を
うけるので、値の範囲はこれに基づくとも言える。これについて規格が
最低限のガイドラインとして提示しているのは 262144 。

まだ規格化はされてないけどこんな話もある。
www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#624

457 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 04:45:36 ]
ありがとう、これで寝られる。
仕様自身は結局釈然としない部分があるけど、
>>448,453の回答が正確で誠実な回答というのは理解できた。

リンク先は策定中の次期規格?
また、膨大な項目が...
現状でさえ、もうついていけないくらいややこしいのに。

458 名前:デフォルトの名無しさん [2007/08/19(日) 12:35:03 ]
#include "DxLib.h"

int WINAPI Winmain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
}
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1)return(-1);
DrawBox(0, 0, 120, 65535, TRUE);

WaitKey();
DxLib_End();
return(0);
}

というプログラム書くとエラー出るのはなぜでしょうか?ちなみに
14さいからはじめるリアルに動くゲーム物理プログラミング教室C言語編
という本に載ってます。

459 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:38:39 ]
エラーの内容かけ。



460 名前:458 [2007/08/19(日) 12:40:14 ]
エラー E2141 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 4: 宣言の構文エラー
エラー E2190 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 4: 不要な }
エラー E2190 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 4: 不要な }
エラー E2303 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 5: 型名が必要
エラー E2356 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 5: 'ChangeWindowMode(int)' の再宣言で型が一致していない
エラー E2344 C:\Users\shiro\Desktop\MyC\プロジェクトに追加すべきファイル_BCC用\DxLib\DxLib.h 1017: 一つ前の 'ChangeWindowMode(int)' の定義位置
エラー E2063 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 5: 不正な初期化
エラー E2293 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 5: ) が必要
エラー E2040 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 6: 宣言が正しく終了していない
エラー E2303 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 7: 型名が必要
エラー E2356 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 7: 'DrawBox(int,int,int,int,int,int)' の再宣言で型が一致していない
エラー E2344 C:\Users\shiro\Desktop\MyC\プロジェクトに追加すべきファイル_BCC用\DxLib\DxLib.h 1519: 一つ前の 'DrawBox(int,int,int,int,int,int)' の定義位置
エラー E2063 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 7: 不正な初期化
エラー E2293 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 7: ) が必要
エラー E2040 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 11: 宣言が正しく終了していない
エラー E2190 C:\Users\shiro\Desktop\MyC\dxtest\dxtest.cpp 12: 不要な }
*** 16 errors in Compile ***

** error 1 ** deleting Debug\dxtest.obj

です。
ちなみに今日勉強したばかりでさぱりとわかりません

461 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:41:46 ]
勉強してないからエラーが出る

462 名前:デフォルトの名無しさん [2007/08/19(日) 12:42:05 ]
どんなエラーがでてるの?

463 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:42:21 ]
最初に4行目にエラーが出ているだろう。
4行目を穴があくまでじっくり見ろ、その教科書とひたすら比較しろ。
それでわからなかったらもっかいおいで。

464 名前:デフォルトの名無しさん [2007/08/19(日) 12:45:46 ]
彼はエラーの見方がわからないと思う

465 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:46:33 ]
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1)return(-1);
DrawBox(0, 0, 0, 120, 65535, TRUE);

WaitKey();
DxLib_End();
return(0);
}

466 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:49:38 ]
ChangeWindowMode(1);
こっちのがいいかも分からんね

467 名前:458 [2007/08/19(日) 13:11:31 ]
>>465のように書いてみましたが
まだ
Fatal: ファイル VORBISFILE_STATIC.LIB が開けません
と出ます。
>>464
まったくおっしゃるとおりです

468 名前:デフォルトの名無しさん [2007/08/19(日) 13:59:36 ]
>>467
エラーの通りvorbisfile_static.libってファイルが見つからないんだろ。
あとは環境が分からないと何も言えないと思う。

自分の開発環境を検索ワードに入れて、
(「vorbisfile_static.lib VC++」とか「vorbisfile_static.lib BCC」とか)
その辺でググって見たらどうよ?

469 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 15:14:22 ]
というか似たような質問を、DxLibのサイトで何度も見た気がするんだ。



470 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 15:55:17 ]
vorbisfile_static.libはDxLibのアーカイブに同梱されてるから
それをソースと同じディレクトリにコピー
というか「このフォルダのファイルを全てコピー」みたいなフォルダなかったか?

471 名前:230 [2007/08/19(日) 23:24:29 ]
GNU Compiler Collectionのg++コンパイラで
-std=c++98というコンパイラオプションというのがあるらしいのですが
ぐぐってもよく分かりませんでした。
誰か教えてください。

472 名前:471 [2007/08/19(日) 23:25:32 ]
230というのははミスです。すみません(汗

473 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 23:42:30 ]
コンパイラマニュアルとかないの?

474 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 23:48:12 ]
>>471 gcc.gnu.org/onlinedocs/

475 名前:471 [2007/08/19(日) 23:49:45 ]
どもです。探し見てみます。

476 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 23:51:50 ]
もう見てないかな
まるちか?2ちゃんではマルチポストは叩かれるですよ
せめて、主とする、質問したスレを付記
機嫌が良ければ、そこにヒント書きますから

477 名前:デフォルトの名無しさん [2007/08/19(日) 23:56:08 ]
今更VC++6.0のMFCなんですけれど、
ツリーコントロールのアイテムの文字列が長いときに
横スクロールにせず、文字列を折り返すことってできますでしょうか?

478 名前:デフォルトの名無しさん [2007/08/20(月) 01:12:13 ]
curses(ncurses)のプログラミングを euc-jp 環境で行って来たのですが、
訳あって utf-8 環境で行うことになりました。

euc-jp 環境で作ったファイルを utf-8 環境に持ってきて、
iconvで文字コードを変更し、コンパイル、実行すると、出力(日本語)が文字化けてしまいます。

utf-8 環境に持ってきた euc-jp のファイルを、
文字コードをそのままにして、端末の表示文字コードを utf-8 から euc-jp に変更した上で、コンパイル、実行すると、正しく表示されます。

これななぜでしょうか?
curses が utf-8に対応していないとかってありますか?

479 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 01:14:08 ]
>>478
ソース文字セットと実行文字セットは別。
gcc のオプション -finput-charset と -fexec-charset を参照すべし。



480 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 01:15:56 ]
>>478
curses 関係あるのか?
puts("あいうえお") とかで試せばわかると思うけど。

481 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 01:20:45 ]
先ずは問題の切り分けだね。
>480の言うように標準出力に出力してみてその時点で文字化けしているならgccのオプションなどを調節。
その上でcurses使うと化けるのなら、cursesの設定か何か、その辺りの調査。

482 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 01:36:08 ]
operator=で返す自分の参照は、constつけるべきですか?

483 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 01:42:23 ]
>>482 いいえ。

484 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 01:48:55 ]
寧ろつけてはいけません。

485 名前:デフォルトの名無しさん [2007/08/20(月) 02:10:18 ]
>>447
どうもです
XSIではコマンドを実行する際にエディタのIDのような物が必要で、
エディタウィンドウを複数開いている時には、コマンド実行前に
その時アクティブなウィンドウのIDを取得する必要があります。

WM_ACTIVATEとかを使えば良いのでしょうか?


486 名前:デフォルトの名無しさん [2007/08/20(月) 02:24:33 ]
動画とかをエンコードするデコーダって色々ありますよね。
あれ使えるソフト作るのって大変なんでしょうか?
AVIutlみたいなソフトって個人では簡単に作れないんですかね?
どの辺勉強したらいいんでしょうか?

487 名前:デフォルトの名無しさん [2007/08/20(月) 02:27:35 ]
>>478 です。

>>479,480,481
さんを参考にして少しいじってみました。

まず、480さんの言うように、単純に puts("あいうえお") を行うプログラムを書き実行してみました。
すると、”-finput-charset=utf-8 -fexec-charset=utf-8”が有る無しに関わらず、文字化けしませんでした。

次に、cursesのコンパイルを、”-finput-charset=utf-8 -fexec-charset=utf-8”を付けて実行してみたところ、やはり文字化けが発生しました。

488 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 02:43:20 ]
単にcursesがutf-8に対応して無いんじゃないの?
utf-8だと端末上での漢字の幅がバイト長と単純に一致しなくなるし
naiveな実装だと色々問題起きそう

489 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 03:30:44 ]
VC++2005で<cstdio>等をインクルードすると、
std::printf はもちろん、名前空間のない ::printf も使えてしまいます。

BCB2006だと逆に、<stdio.h>をインクルードすると
::printf を使えますが、 std::printf も使えます。

どちらが正しいのでしょうか。また、正しくない方を正しくする方法はありますか?



490 名前:デフォルトの名無しさん [2007/08/20(月) 04:18:35 ]
>>478です。
www.hakodate-ct.ac.jp/~tokai/tokai/gtkmm/etc/p3.htm
というサイトがあったので、
・-lncurses ではなくて -lncursesw をリンクする
・#include <locale.h>
・setlocale( LC_ALL, "" );

を取り入れたところとりあえず、euc-jp 環境のファイルを utf-8 環境に持ってきて、
このファイルの文字コードを utf-8 に変えてコンパイルし実行すると、
文字化けしない ・・・というのは達成できました。

しかし、私は UNIX(LINUX) にあるような SLコマンド のクマAA バージョンを作って遊んでいたのですが、
euc-jp環境とutf-8環境では少し動きが変わってしまいました。
その動きの変わってしまう場所が、euc-jp環境で苦労して改良したところなので、
かなりショックです。

まぁ、なんとか解決策があればいいのですが、
私の知識ではちょっとつらいかも知れません。

491 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 07:47:38 ]
for(;;)
;
こんなのあるのね
びっくり

492 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:25:05 ]
無限ループの常套手段

493 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:27:33 ]
俺はwhile(1)派

494 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:31:18 ]
自分も無限ループはwhile派かな
カウンタが要るときはfor使うかもしらんけど

495 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:46:09 ]
>>489
<cstdio> で std::printf が、 <stdio.h> で ::printf が使えるようになることになっている。
1つのヘッダで両方が使えるようになることは保証されない。

496 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 18:43:51 ]
std::bad_allocを捕まえたりいろいろ例外処理を書いているのですが、
メモリ4GBもあるので、デバッグ中にbad_allocが投げられることは今まで一度もありません。
投げられた際の動作をデバッグしたいのですが、そういうときはどうすればいいでしょうか。
敢えてメモリを消費したりするんですか?

↑ではbad_allocのことですが、他にもWindowsのAPI関数が失敗したときとかも、
ちゃんと自分が書いた処理が動作するか確かめたいんですが。

497 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 19:07:29 ]
throw std::bad_alloc();

498 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 19:37:17 ]
>>496
適当にラップして失敗に相当する結果を返せばいいべ

499 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 20:47:05 ]
起動時に malloc(100000000) とか適当にやっとけば足りなくなるんじゃない?



500 名前:デフォルトの名無しさん [2007/08/20(月) 21:09:14 ]
例えば、"a"とか"あ"の文字コードを出力する方法ってありますか?

501 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 21:11:15 ]
printf( "%d", 'a' );

502 名前:デフォルトの名無しさん [2007/08/20(月) 21:30:04 ]
>>501
ありがとうございます。

このページ
ash.jp/code/unitbl21.htm
の、UTF-8の欄のような値を出力する方法ってありますか?

503 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:23:30 ]
%Xでの表示をぐるぐるまわせばおわりだろうに。

504 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:26:44 ]
>495
www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#456
によると、
> Including the header <cxxx> declares a C name in namespace std.
> Including the header <xxx.h> declares a C name in namespace std (effectively by including
> <cxxx>), then imports it into the global namespace with an individual using declaration.
ということで、xxx.h だと std とグローバル両方で宣言されるというのが規格の意図らしい。
なので、BCB2006 の挙動は(それだけ見ると)規格に合致している。

が、現実的には
> If you want to assuredly declare a C name in the global namespace, include <xxx.h>.
> You may or may not also get the declaration in namespace std.
> If you want to assuredly declare a C name in namespace std, include <cxxx>.
> You may or may not also get the declaration in the global namespace.
ということで、>495 が妥当な仮定。
規格もこの現状を追認する形での修正が提案されている。

>502
自分がやりたいと思っていることをもうちょい正確に表現して欲しい。
文字が表示されて欲しいのか、文字コードが表示されて欲しいのかどっち?
入力として考えているのはどんなデータ?外部から与えられる文字列か、文字列リテラルか。文字コードは?

505 名前:504 mailto:sage [2007/08/20(月) 22:28:32 ]
最初のアンカーは >489 につけるべきだった。

506 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 02:01:29 ]
別人ですが
>>499
バグでそんな値(もっとでかい、0x40000000とか)を与えたことがあるけど、
無理に仮想記憶拡大して確保しようとして、システムが実質操作不能になるだけだった

507 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 02:33:09 ]
Windowsって1プロセスが使用できるメモリ空間のサイズって指定出来ないの?
Win2000の頃は2G制限とかあった記憶があるけど、今はどうなんだろ。

508 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 03:06:41 ]
>>507
以下は単なる思いつき。
1. プログラムの改造が可能なら、自分用の一定量しか領域確保できないメモリマネージャを作る。
2. メモリ取得APIをフックして自力で制限する。
3. SetProcessWorkingSetSizeを指定して、同時にスワップを小さくする。


509 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 05:28:56 ]
たった1000行のソースも完全に把握できねぇぇぇぇぇぇぇぇぇぇぇぇぇぇぇぇぇぇ
もうだめだぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ



510 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 05:38:16 ]
やっと気付いたか。
さっさと人生やり直せ。

511 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:15:52 ]
>>509
1関数1000行なら窓から投げ捨てろ






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

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

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