C言語なら俺に聞け(入門編)Part 100at TECH
C言語なら俺に聞け(入門編)Part 100 - 暇つぶし2ch482:デフォルトの名無しさん
12/04/15 15:55:20.62
>>481
subst の型と戻り値

483:C言語初心者
12/04/15 16:59:38.68
substをchar型にすればよいのですか??
あと戻り値はどのようにすればうまくいきますか??

484:デフォルトの名無しさん
12/04/15 17:24:20.62
char* subst(char *str, char c1, char c2){
char *p = str;
while(*p){
if(*p == c1){
*p = c2;
}
p++;
}

return *str;
}

485:はちみつ餃子 ◆8X2XSCHEME
12/04/15 17:26:30.56
>>484
まちがえてるぞ
return *str;
じゃなくて
return str;

486: ◆QZaw55cn4c
12/04/15 17:27:56.02
>>481
URLリンク(codepad.org)

>>484
×return *str;
*str って何?

487:デフォルトの名無しさん
12/04/15 17:39:17.76
>>485
見落とした

488:デフォルトの名無しさん
12/04/15 17:42:37.05
void でええやん無理しないで
(void* はやめれ)

489:デフォルトの名無しさん
12/04/15 17:54:45.64
>>479
3の4乗通り全部試してるのか、結構無駄があるな
今日はこれをビット演算に改造して使わしてもらおう
もっと速いの考えた人待ってるよ
ちなみに実行は12玉・3箱くらいが主に

490:デフォルトの名無しさん
12/04/15 18:13:55.07
3箱なら、一箱+(一箱+一箱)って考えれば再帰的に解けそうな気がするけどなー

491:デフォルトの名無しさん
12/04/15 18:15:39.81
>>478
全部0で初期化される事が規格で保証されているよ
でも、警告出るコンパイラもあるのでmemsetした方が鬱陶しくないと思う

492:デフォルトの名無しさん
12/04/15 18:33:31.00
>>491
そのコンパイラを窓から投げ捨てるかオプションで黙らせるべき
memset なんか、それこそ保証ないんだから

493:デフォルトの名無しさん
12/04/15 18:45:39.85
>>478 >>491
警告を出さないためにはこうじゃないかな。
int a[3][4] = {{0}};

>>492
投げ出す前に正しく書くべきじゃないかな。

494:デフォルトの名無しさん
12/04/15 18:49:16.21
>>493
「正しい」の定義を聞こうか

495:デフォルトの名無しさん
12/04/15 20:22:21.79
>>493
ていうか、{}だけでいいだろ。

「最初の要素を0で、それ以降を0で初期化」
って冗長な表現だと思わないか?

496:デフォルトの名無しさん
12/04/15 20:23:05.20
>>495
それも仕様から外れてる

497:デフォルトの名無しさん
12/04/15 20:35:52.45
>>496
別にはずれてないだろ・・・

498:デフォルトの名無しさん
12/04/15 21:18:11.16
>>497
C++とは違うのだよ


499:479
12/04/15 21:49:08.63
>>489
いやそんなに試してないよ

確かに、途中で 「入れてないアイテム数 == 空の箱数」 になれば、後は順番に入れていく1通りが確定するから、
その処理を入れれば、試行じゃなくて純粋に列挙できる…と思う

500:479
12/04/15 21:51:12.76
>>489
補足:
現に、1つめのアイテムは、1つめの箱にしか入れてない
また、2つめのアイテムは、1つめまたは2つめの箱にしか入れてない

501:デフォルトの名無しさん
12/04/15 23:27:52.21
UTF-8の文字コードで書かれたファイるがあるんですが、
これをfgetsで読み込んだ場合ちゃんと一行ごとに読んでくれるんですか?

502:デフォルトの名無しさん
12/04/15 23:30:24.75
うん。

503:デフォルトの名無しさん
12/04/15 23:31:03.07
試しゃーいいじゃねーかよ
アホ

504:デフォルトの名無しさん
12/04/15 23:44:12.03
strstrで比較するときはどうなんですか?
これも正しく比較されますか?

505:デフォルトの名無しさん
12/04/15 23:58:26.81
試しゃーいいじゃねーかよ
アホ

506:デフォルトの名無しさん
12/04/15 23:59:07.11
今PC壊れてるんでお願いします

507:デフォルトの名無しさん
12/04/16 00:00:02.19
直しゃーいいじゃねーかよ
アホ

508:デフォルトの名無しさん
12/04/16 00:16:36.71
clってexec-charset相当のオプションはないのかね?

509:デフォルトの名無しさん
12/04/16 00:18:23.18
探しゃーいいじゃねーかよ
アホ

こうかな。

510:デフォルトの名無しさん
12/04/16 01:04:17.41
まずはそのクソオプションそのまま試したのかよ
アホ

511:デフォルトの名無しさん
12/04/16 01:07:33.10
そういえばバカバカ言うツンデレはたくさんいるけど
アホアホ言うツンデレって見たこと無いな・・・
大阪系のツンデレになるのかな

512:デフォルトの名無しさん
12/04/16 01:09:55.58
>>511
初代いいんちょの名をほしいままにする東鳩のいいんちょを忘れるとは

513:デフォルトの名無しさん
12/04/16 18:21:24.30
>>511
うん


514:デフォルトの名無しさん
12/04/16 18:23:11.91
アセンプリでpushって命令あるけど、あれどういう意味?
moveは移動ってわかるんだけど、pushも似たようなんじゃないのですか?
調べてもスタックがどうたらよくわからない。

515:デフォルトの名無しさん
12/04/16 18:26:42.00
>>514
なにもかも分かってない

516:デフォルトの名無しさん
12/04/16 18:27:13.17
牧草を筒の中に入れて固めていた頃があったんだよ
で、固めることをpushって入ってたんだよねー
アメリカの伝統的牧畜の影響

517:デフォルトの名無しさん
12/04/16 18:28:01.48
配列だと文字をstrcpyできないですかね?

char a[3]
a[0]='s';
a[1]='t';
a[2]='u';

char b[2];
b[0]='r';
b[2]='d';

この場合、strcpy(a,b);はエラーですか?


518:デフォルトの名無しさん
12/04/16 18:29:48.84
pushはメモリに数値を書き込むって意味じゃなかったっけ?
それ以外考えられんのだが。

push abc 3

abc番地に3を書き込む。
違うっけ?

519:デフォルトの名無しさん
12/04/16 18:29:50.36
>>517
運がよければ動く
確実にするには文字列の終端が必要

520:デフォルトの名無しさん
12/04/16 18:31:53.75
新卒入社の研修かな

521:デフォルトの名無しさん
12/04/16 18:33:39.56
>>519

char *s;
char *t;

s="good";
t="bad"

strcpy(s,t);だとOK?

配列型文字列はstrcpyダメで、ポインタ型文字列はstrcpyOK?

522:デフォルトの名無しさん
12/04/16 18:34:03.04
内容も間違ってるし、書き込むスレも間違ってる

523:デフォルトの名無しさん
12/04/16 18:36:01.18
>>521
さらにNG度UP!

524:デフォルトの名無しさん
12/04/16 18:36:31.96
utf-8の文字コードで書かれたファイルを読んだ場合、strstrで比較してもちゃんとひっかかりますか?

525:デフォルトの名無しさん
12/04/16 18:43:13.25
うん。

526:デフォルトの名無しさん
12/04/16 18:45:12.26
>>521
アウト

>>524
探すものがasciiのみであるならば。

527:デフォルトの名無しさん
12/04/16 18:49:15.59
ワロタwwstrcpy使えないじゃんww

>>521もダメで、>>517もダメなら何が正しいんだよ。

文字列はポインタか配列でしか表現できんだろうに

528:デフォルトの名無しさん
12/04/16 18:50:28.97
間違えたwww

strcpyじゃなくて

strcmpです。

よろしくお願いします。

529:デフォルトの名無しさん
12/04/16 19:07:04.22
>>526
> 探すものがasciiのみであるならば。
ascii範囲外でも問題ないよ

530:デフォルトの名無しさん
12/04/16 19:08:49.27
>>526
>>529

ありがとうございます。
ascii範囲外でも問題ないってどういう仕組みなんでしょうか?
勝手に文字コード判断して比較してくれてるんですか?

531:デフォルトの名無しさん
12/04/16 19:17:24.72
単にバイナリで比較してるだけ。

532:デフォルトの名無しさん
12/04/16 19:19:45.77
別に文字コード判断する必要ないだろ

533:デフォルトの名無しさん
12/04/16 19:26:28.79
やっぱそういうことか
おk
サンキュ

534:デフォルトの名無しさん
12/04/16 19:54:34.48
>>528
天才

535:デフォルトの名無しさん
12/04/16 19:56:21.89
>>527=>>517
>>517はまず文字列じゃないのでアウト。
>>521はリテラルに対する書き換えなのでアウト。

536:526
12/04/16 19:59:15.10
>>530
双方がちゃんとutf-8なら問題ないです。ごめんなさい。

537:デフォルトの名無しさん
12/04/16 21:51:41.50
#include <stdio.h>

int main() {
int i;
double a;

a=0;
for(i=0; i<10; i++) {
a = a + 0.1;
if(a == 0.3)
break;
}
printf("a =%6.3f\n", a);
return 0;
}

このプログラムでa=1.000ってなっちゃうんだけどなんでだろ
a=0.3じゃないの?

538:デフォルトの名無しさん
12/04/16 21:56:12.59
a == 0.3が成立しないから。
なぜ成立ししないかは、浮動小数点数 誤差あたりでぐぐってしらべれ

539:デフォルトの名無しさん
12/04/16 22:22:49.88
>>537
初めてCを習ったとき、それ注意されたわ
懐かしい。

540:デフォルトの名無しさん
12/04/16 22:32:44.34
if ( a >= 0.3 )
break;

にでもしとけ


541:デフォルトの名無しさん
12/04/16 22:55:01.33
書式指定フォーマットの%Xで32ビット分しか表示されないのは仕様ですか?
※VS2010

542:デフォルトの名無しさん
12/04/16 22:58:56.93
仕様です
もっとまともなC99対応コンパイラ使って下さい

543:デフォルトの名無しさん
12/04/16 22:59:28.56
マニュアル読めば書いてあるだろうが

544:デフォルトの名無しさん
12/04/16 23:03:51.89
色つきの文字って配列に入れたりできないのかな?
好きなときに保存した色を簡単にだしたいんだけどどうすればいいんだろう

545:デフォルトの名無しさん
12/04/16 23:06:11.14
>>544
タグ付けとパーサ作ればおk

546:デフォルトの名無しさん
12/04/16 23:37:41.80
パーサってなんだろ
色々調べてみたけどちんぷんかんぷんだから今は諦めます
ありがとう

547:デフォルトの名無しさん
12/04/16 23:51:30.35
色つきの文字を表現する構造体を作って配列にすれば?
文字列としても使いたいなら、文字列と色情報配列を持つ構造体にするとか。

548:デフォルトの名無しさん
12/04/17 01:14:18.11
cursesお勧め

549:デフォルトの名無しさん
12/04/17 01:33:07.38
printf( "\033[2J" ); /* これまでの画面を消去します。*/
printf( "\033[043m ABC\t" ); /* 背景色黄色で ABC と表示し、タブを表示します。*/
printf( "\033[034m DEG\t" ); /* 青色で DEF と表示し、タブを表示します。*/
printf( "\033[031m GHI\n\n" ); /* 赤色で GHI と表示し、2回改行します。*/

550:デフォルトの名無しさん
12/04/17 19:12:19.74
動的に確保したい構造体配列(hoge)のメンバに動的に確保したい構造体配列(sub)を持ったもの
を考えており、main関数で宣言自体をして確保、解放自体は別の関数でするようなものを作ってみたのですが
どうもしっくり来ないんですがもっといい方法はあるのでしょうか。

URLリンク(codepad.org)

551:デフォルトの名無しさん
12/04/17 19:17:12.94
>>550 の方法がいいと思うよ

552:デフォルトの名無しさん
12/04/17 19:42:18.40
>>550
関数名をalloc_hogeとfree_hogeとかに変えたらいいんじゃないだろうか

553:デフォルトの名無しさん
12/04/17 19:50:17.03
どのあたりがしっくりこないんだろ。
確保と解放が完全な対になってないあたり?

554:はちみつ餃子 ◆8X2XSCHEME
12/04/17 20:14:05.67
>>550
C はそういうものじゃね?
C++ ならもうちょっと「しっくりくる」ように書けそうに思うけど。

555:550
12/04/17 20:20:47.88
とりあえずセグメント違反を繰り返しながらここにたどり着いたのでしっくりこない点は

free関数の引数が*hogでいいが確保では**hogにしないといけないのか
確保関数でアドレスの先頭を表すのにhog[0]を使わないといけないのか

です。

556:はちみつ餃子 ◆8X2XSCHEME
12/04/17 20:30:51.83
>>555
一般的な感覚だと
struct hoge* initial_main(void)
{
struct hoge* hog = malloc(sizeof(struct hoge));
hog->A = malloc(sizeof(struct sub)*(2));
hog->B = malloc(sizeof(struct sub)*(4));
hog->C = malloc(sizeof(struct sub)*(8));
hog->C[5].a = 100;
return hog;
}

と定義しといて、
呼出す側は

hog=initial_main();

じゃないかなぁ。

557:デフォルトの名無しさん
12/04/17 20:31:15.83
>>555
こんな感じとか。
名前は、initial_mainじゃなくて create_hogeとかalloc_hogeにしたほうがいいと思うけど

struct hoge* initial_main()
{
struct hoge* hog;
hog = malloc(sizeof(struct hoge));
if(hog){
hog->A = hog->B = hog->C = 0;
hog->A = malloc(sizeof(struct sub)*(2));
hog->B = malloc(sizeof(struct sub)*(4));
hog->C = malloc(sizeof(struct sub)*(8));
if(hog->C){
hog->C[5].a = 100;
}
}
return hog;
}

558:はちみつ餃子 ◆8X2XSCHEME
12/04/17 20:34:55.46
>>557
確かに initial って名前だと確保とは別っていう印象を受けるね。
C++ から用語を取って construct でもいいかも。

559:デフォルトの名無しさん
12/04/17 20:37:32.06
基本どおりに ~~alloc と ~~free でいいだろ

560:デフォルトの名無しさん
12/04/17 20:43:32.00
>>556,557
ありがとうございます。名前はわかりやすくしときます。

struct hoge* initial_main(void){ }
ような使い方を知りませんでした。
こっちのほうがぱっと見わかりやすいです。

561:デフォルトの名無しさん
12/04/17 21:05:40.25
>>560
mallocとかと変わらんよ。

562:デフォルトの名無しさん
12/04/17 21:50:02.50
「malloc_なんたら」を C++ では作りやすくしてくれてるだけ
construct はやだな、extern "C" したときのうんこ臭が耐えがたい

563:デフォルトの名無しさん
12/04/17 21:52:09.11
なんでC++?

564:デフォルトの名無しさん
12/04/17 22:12:25.72
あ、隔離する気ならノープロブレム

565:デフォルトの名無しさん
12/04/17 22:50:14.48
>>557
> create_hogeとかalloc_hogeにしたほうがいいと思うけど
create,alloc,init(ialize),newなどは好みだけど
hoge_createやhoge_allocのほうがいいと思うな。

566:デフォルトの名無しさん
12/04/17 22:52:23.06
create_hoge = hogeを作れ
hoge_create = hogeが作る

567:はちみつ餃子 ◆8X2XSCHEME
12/04/17 22:59:51.50
合成語として考えるなら hogecreate でもおかしな順序ではないよ。
伝統的には create_hoge の方が主流に思えるのは確かだけど…。

568:デフォルトの名無しさん
12/04/17 23:01:43.59
めんどくせぇからnewつかえるのに移れよ

569:デフォルトの名無しさん
12/04/17 23:04:43.68
namespace 的な考え方すりゃ接頭辞を共通にしたほうが分かりやすい

570:はちみつ餃子 ◆8X2XSCHEME
12/04/17 23:06:34.62
>>565
俺の好みでは確保したメモリの構造を見せる場合には alloc と free で
ハンドルとして扱ってもらう場合には create と close って使い分けな感じ。

571:デフォルトの名無しさん
12/04/17 23:06:39.12
うん

572:デフォルトの名無しさん
12/04/17 23:08:09.28
>>567
gtk_init
Py_Initialize
lua_open
SDL_Init

573:はちみつ餃子 ◆8X2XSCHEME
12/04/17 23:10:48.08
>>572
そのあたりは API としての性格をもったものだから区別が必要じゃないかなぁ。

574:デフォルトの名無しさん
12/04/17 23:14:23.02
allocateとinitializeをallocate関数でやるのはどうかと思うの。

575:デフォルトの名無しさん
12/04/17 23:27:45.93
>>573
じゃぁ
組み込みではなく生成したインターフェースが
NAME_newな形になるCSTLはどう?

create_hoge
より
hoge_create
のほうが扱いやすいと思うよ
補完しやすいし。

576:デフォルトの名無しさん
12/04/17 23:32:59.54
C++じゃ
 オブジェクト.メソッド
なんだが、お前らオブジェクト指向言語使わんの?

577:デフォルトの名無しさん
12/04/17 23:37:05.61
どーせ ファクトリ.create_hoge vs ファクトリ.hoge_create になるよ

578:デフォルトの名無しさん
12/04/17 23:37:50.58
>>576
ンなの聞いてねーよks
スレタイすらも読めないのかよ池沼
ヒャッペン音読して出直せバカ

579:はちみつ餃子 ◆8X2XSCHEME
12/04/17 23:41:04.09
>>575
マクロを使って生成しているとは言え、それも CSTL というライブラリが提供している API っていう気もする。
ただ、いずれにせよ上述の「主流に思える」というのはそうでもないかな、という気がしてきた。

580:はちみつ餃子 ◆8X2XSCHEME
12/04/17 23:58:47.15
>>575
補完しやすいというのは疑問があるぞ。 構造体とそれに対する操作の組を名前にするわけだろ。
だとすると hoge_ まで入力したときの候補は create_ まで入力した候補より分量が多くなる。
補完候補は少ない方が良いと考えると create_hoge の方が補完しやすいと言えないか?

581:デフォルトの名無しさん
12/04/18 00:19:00.97
個人的にgimpソースハックしたときに、関数名の冗長さには苦労させられたわ
GtkWidget *scale;
scale = gimp_prop_spin_scale_new (config, "brush-size", _("Size"), 0.01, 1.0, 2);
gimp_spin_scale_set_scale_limits (GIMP_SPIN_SCALE (scale), 1.0, 1000.0);
gimp_spin_scale_set_log_mode (GIMP_SPIN_SCALE (scale), TRUE);

終始こんな調子の長い名前で変数や関数が羅列されてる。
処理的には大して高度なことしてないのに、パッチ当てるべき箇所を探すだけでも、妙に疲れる。

経験的実感として、全体が長い名前ばかりなコードは、明らかによみずらい。妙な疲労感を伴う気がするわ。

関数は gmp_set_scale() や gmp_new_scale() 程度の10文字程度の長さが最も読みやすいと経験的に感じる。これ以上長いと短期記憶を余計に消費して疲れるし、これ以上短いと意味が不明で疲れる。

582:デフォルトの名無しさん
12/04/18 01:10:33.43
そしてその命名ルールを守ってもGIMPほどのモノは作れないという不思議w


583:デフォルトの名無しさん
12/04/18 01:32:30.77
>>579
単なるモジュールプレフィクスだよ。
関数名が被らんようにと言うのが主目的で、操作対象を表すわけじゃない。
せいぜいどのモジュールに属する関数かという程度。

モジュール外部と結合する意味でAPI的と言えるだろうけど、
CSTLが提供している云々は関係ないな。
外部結合だから出力の命名規則がそうなってるだけだ。

なんで、意味合いが違うのは同意なんだけど、Cの世界じゃ
モジュールに分けたらプレフィクス付ける方が主流だと思うよ。

584:デフォルトの名無しさん
12/04/18 02:07:17.52
>>580
ない。

585:はちみつ餃子 ◆8X2XSCHEME
12/04/18 13:09:12.05
>>583
俺は API 的というのを広い範囲で、外に公開する名前くらいの意味で言ってた。
言葉の使い方を除けばだいたい認識は一致していると思う。

586:デフォルトの名無しさん
12/04/18 20:03:47.61
>>582
gimpって規模は異常に巨大だけど、徹底的にコードを単純な書式にして、モジュール化も徹底してるおかげで
局所単位でいぢれるし、局所単位で見ればそれほど超高度なことをしてる箇所は少ないので、意外と改造できるのでハック初心者の練習におすすめ。

とにかくコード書式が、これでもかというほど単純なように徹底されてる。
関数中で使う変数の宣言は、必ず関数の先頭位置で行うようになってるし、
GtkWidget *scale;
scale = gimp_prop_spin_scale_new ();

GtkWidget *scale = gimp_prop_spin_scale_new ();
と書くことすらしない。徹底的に一行の情報量を減らすというアプローチで書かれてる。
一見すると過剰な程にコードが簡易化されてるが、そのおかげで、所見でもある程度読める。ただし全体の行数は膨大。

587: ◆QZaw55cn4c
12/04/18 21:38:55.50
>>586
>GtkWidget *scale;
>scale = gimp_prop_spin_scale_new ();
>を
>GtkWidget *scale = gimp_prop_spin_scale_new ();
>と書くことすらしない。

auto変数の初期化すら嫌いな -pedantic な人たちなのでしょう、多分。

588:デフォルトの名無しさん
12/04/18 21:46:14.13
GTK自体の仕様がよくわからん…

589:デフォルトの名無しさん
12/04/18 21:49:24.30
っていうか
関数スコープの途中で変数宣言できるようになったのってC++が出てきてからじゃね?

1行の情報量を減らすってのはなるほどなぁとは思う。


590:デフォルトの名無しさん
12/04/18 22:12:00.57
関数スコープとか・・・またまた香ばしいw

591:デフォルトの名無しさん
12/04/18 22:13:38.56
ブロックの先頭以外、でいいのにね

592:デフォルトの名無しさん
12/04/18 22:24:29.30
関数スコープは荒れる


593:デフォルトの名無しさん
12/04/18 22:36:08.96
うん

594:デフォルトの名無しさん
12/04/18 23:32:26.55
関数スコープの宿命だな

595:デフォルトの名無しさん
12/04/18 23:33:08.58
関数スコープの宿命はよ


596:デフォルトの名無しさん
12/04/19 00:02:06.72
言うなら PG の、C 使いの宿命を言ってみな

597:デフォルトの名無しさん
12/04/19 00:45:13.12
お前が関数ポインタの宿命を言ったらな。

598:デフォルトの名無しさん
12/04/19 00:51:23.99
C++のソースがCのソースに変換されたのを見て、ショックを受けた、口

599:デフォルトの名無しさん
12/04/19 00:54:48.71
C++のtry-catch構文って、Cのソースに変換すると、どんな記述になりますか?

600:589
12/04/19 00:57:41.83
catch, finallyブロックのアドレスを順番にスタックに積んでいって
割り込みハンドラーが呼ばれたら順番にそれを呼べば良いんじゃね?

601:デフォルトの名無しさん
12/04/19 00:58:47.42
無理じゃね

602: ◆QZaw55cn4c
12/04/19 01:02:45.86
>>599
URLリンク(www.nurs.or.jp)

603:デフォルトの名無しさん
12/04/19 01:04:11.92
関数ポインタならできるんじゃね?


604:デフォルトの名無しさん
12/04/19 01:04:55.24
>>600 >>602 情報どうもです、結構複雑になるんですね

605:デフォルトの名無しさん
12/04/19 01:30:15.28
前処理におけるエラーについての質問です。

#if (TESTDEF == 1)
aaa();
#else
bbb();
#endif

上の例では TESTDEF が 1 だったら、aaa() を実行して、
そうでない値のときには bbb() を実行してくれることを期待して記述し、そのように動作します。

しかし TESTDEF が未定義の場合にも bbb(); が実行されてしまいました。
てっきり未定義エラーのようなものが発生すると思ったので驚きました。

上記のようなことをする場合に、
TESTDEF が未定義である場合にコンパイルエラーとする方法はありませんでしょうか?


606:デフォルトの名無しさん
12/04/19 01:33:19.91
#if (ISSET_TESTDEF == 1)
ccc();
#else
ddd();
#endif

なるプリプロセッサを延々と書き連ねる


607:デフォルトの名無しさん
12/04/19 01:35:44.19
>>605
#errorを使う。
URLリンク(codepad.org)

608:デフォルトの名無しさん
12/04/19 02:15:29.40
>>606-607
やはり前処理1行だけで判断させてエラーにするのは難しそうですね。
>>607のコードのやりかたで自分でエラー行を書く方法で考えてみます。

ありがとうございました。


609:デフォルトの名無しさん
12/04/19 02:38:18.42
ふざけた野郎だな。

610:デフォルトの名無しさん
12/04/19 03:05:07.76
>>606がだよな。いみわからんし

611:デフォルトの名無しさん
12/04/19 03:28:31.23
#ifdef TESTDEF
#if (TESTDEF == 1)
aaa();
#else
bbb();
#endif
#endif

612:デフォルトの名無しさん
12/04/19 04:13:03.33
プリプロセッサには elif 構文あるんだけどな

613:デフォルトの名無しさん
12/04/19 04:44:52.45
この時どうするかいい方法が思い浮かばんかった。

#include <stdio.h>

#define TESTDEF

void aaa(void)
{
fprintf(stdout, "aaa\n");
}

void bbb(void)
{
fprintf(stdout, "bbb\n");
}

int main(void)
{
#ifndef TESTDEF
#error "not defined TESTDEF."
#elif TESTDEF == 1
aaa();
#else
bbb();
#endif
return 0;
}


614:デフォルトの名無しさん
12/04/19 04:59:40.34
mfcなんですが、何故か?値が代入されません

for ( i=0; i<opetbl.recv_len; i++ ){
recv_dt.data[i] = (unsigned char)opetbl.recv_data[i];


と言う文が有ったのですが・・・
同じ様に・・・

for ( i=0; i<opetbl.recv_len; i++ ){
recv_dt.data[i] = (unsigned char)opetbl.recv_data[i];

dainyuu_data[i] = (unsigned char)opetbl.recv_data[i];



615:デフォルトの名無しさん
12/04/19 05:00:01.66
と、入れてみました。上の方は値がちゃんと代入されるのですが
同じ事をやっている下は代入されません・・・

変数の宣言は、グローバル変数で宣言しました

int dainyuu_data[RECV_LENG];

一方、値が代入される変数は、
union を使い、やっています。

union U_recv_dt {
unsigned char data[RECV_LENG];
};

メモリの設定とか、必要なのでしょうか?

616:デフォルトの名無しさん
12/04/19 05:15:43.14
>一方、値が代入される変数は、
recv_dt のこと?

dainyuu_data は int の配列
recv_dt は unsigned char の配列

代入されているかの検証で
元データを文字列と期待し printf にて先頭アドレスを渡したとすると、異なる出力になるのは当然だと思うが
配列の index 総なめで、個々に出力してみたの? (printf("%d\n", daynyuu_data[i] ってこと)

617:デフォルトの名無しさん
12/04/19 05:50:29.80
fprintf(stderr, "dainyuu_data = %p\n", dainyuu_data);
で代入時、参照時にdainyuu_dataのaddress確認してみたら?
異なると思うよ。

618:デフォルトの名無しさん
12/04/19 06:06:59.39
>>616
>>617
有り難うございます。

>dainyuu_data は int の配列
recv_dt は unsigned char の配列

unsigned char の配列でも試してみましたが、駄目でした。

>総なめで、個々に出力してみたの? (printf("%d\n", daynyuu_data[i] ってこと)

デバグモードのブレークポイントで配列の中を確認しました。
入っていない様です、また画面に表示も出ません(値は0です)

返信有り難う御座います・・・ 
疲れたので寝ます・・・

619:デフォルトの名無しさん
12/04/19 07:04:42.88
おやすみ、ムーニーマン

620:デフォルトの名無しさん
12/04/19 10:10:58.61
下の代入文は本当にfor文の中に入ってるの?

621:デフォルトの名無しさん
12/04/19 10:45:52.19
デバッガ使ってて分からんぐらいだから、他のスレッドにリセットされたことも考慮しないとだめかもね

622:デフォルトの名無しさん
12/04/19 10:59:41.13
うむ

623:デフォルトの名無しさん
12/04/19 11:13:08.28
グローバル以外にもdainyuu_dataという名前の配列があるとか。

624:デフォルトの名無しさん
12/04/19 19:20:12.59
そうだよ

625:デフォルトの名無しさん
12/04/19 22:17:47.25
次の方どぞ

626:デフォルトの名無しさん
12/04/19 23:03:21.29
宿命はよ

627:デフォルトの名無しさん
12/04/20 17:55:05.45
C++の基本~標準を学校で学びましたが
C言語を独学で勉強できますか?

628:デフォルトの名無しさん
12/04/20 19:03:38.06

                       できます。具体的には以下の通りです。

              「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
                                ↓
     「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
                                ↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
                                ↓
      「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
                                ↓
           「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
                                ↓
        「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
                                ↓
                              神の誕生

629:デフォルトの名無しさん
12/04/20 21:55:24.56
-神の誕生
+土方の誕生

630:デフォルトの名無しさん
12/04/20 22:39:06.55
ゲーム作るには最低どのくらいの知識が必要なのよ

631:デフォルトの名無しさん
12/04/20 22:44:57.75
歩く前に歩くことをやめる人間には無理

632:デフォルトの名無しさん
12/04/20 22:45:39.31
何の知識だよ

633:デフォルトの名無しさん
12/04/20 22:49:01.61
最低でも四元数
あとはUI関連の古典 誰のためのデザイン でも読んどけ

プログラム知識だけで面白可笑しく作れるとか思ったら
そいつはアホ


634:デフォルトの名無しさん
12/04/20 22:51:05.14
誰がゲームを面白おかしく作れるための知識がほしいって書いてんの?

635:デフォルトの名無しさん
12/04/20 22:53:06.67
面白くもおかしくもない一流のクソゲーでも作りたいのかwww
いやそういう知識なら俺は知らんよw


636:デフォルトの名無しさん
12/04/20 22:58:50.78
ゲーム作るのには四元数は必須だよな。俺もそう思う。
どんなゲームでも絶対使うもん。マインスイーパとか。

637:デフォルトの名無しさん
12/04/20 22:59:23.41
>>630
それはおまえさん自身が決めることだ

少しでもマシンの動かし方を憶えたら
こんなことできないか? とアイディアから始めるんだ

必要な知識はそれによって決まる

ゲームプログラマってのはコンピュータのプロではなく
遊びのプロであることを片時たりとも忘れてはならない

638:デフォルトの名無しさん
12/04/20 23:06:59.79
そんなもんディレクターとかデザイナーの話だろ
プログラマとは別

639:デフォルトの名無しさん
12/04/20 23:08:07.03
質問者はスレチともどうとも取れない感じだったのに、回答者が全力でスレチってどういうことなん。
しかも超偉そう。

640:デフォルトの名無しさん
12/04/20 23:10:55.97
ゲームプログラマは、無能な企画の脳内にあるイメージを口頭でのわずかな情報で再現する能力が必要

641:デフォルトの名無しさん
12/04/20 23:18:05.79
ディレクタやデザイナになりたければ
そこそこの組織に入るにはどうするかが問題となる

で、面接でくだんの質問をしたらまず祈られるだろう

スレチとか言っている連中はそこがわかってない
内容的に1人で勝負できる人がスポンサーをつのる様相がわかってない

642:デフォルトの名無しさん
12/04/20 23:23:36.78
ああごめん。たしかに俺わかってなかった。
スレチじゃなくて板違いだったね…

643:デフォルトの名無しさん
12/04/20 23:30:38.38
(白黒4階調の初代ゲームボーイで)フルカラー出してくれ。

と企画から言われた時は、ハードウェアのマニュアルをそいつに投げ付けた事は良い思い出。

644:デフォルトの名無しさん
12/04/20 23:40:30.49
インベーダーの仕様や白黒TV用カラーガラスでも投げ返されると面白いんだがな

645:デフォルトの名無しさん
12/04/20 23:41:01.13
色のにじみでハードの定義にない色を出していたのも良い思い出
通信路の定義の違いまで何とかできてしまったのは無知のおかげで今の俺なら発狂してた
そこそこの組織にいる人ならハード担当と癒着でない仲の良さを大事にする

646:デフォルトの名無しさん
12/04/20 23:43:00.93
>>645
その時代の話、結構興味あるので、酉とかつけてもらえますか?

647:デフォルトの名無しさん
12/04/20 23:44:55.59
さんずいがねえなあ

648:デフォルトの名無しさん
12/04/20 23:50:13.31
じゃあ酒あげるんで、レスの1行目に
~おじさんの楽しい昔話~
ってつけるようにしてもらえませんか

649:デフォルトの名無しさん
12/04/20 23:51:23.08
~おじさんの楽しい昔話~(板違いじゃないよ!)
でもいいです。あと、もしおばさんだったらごめんなさい。その場合はおばさんと表記を改めていただけるようお願いします。

650:デフォルトの名無しさん
12/04/20 23:52:54.49
ゲ板にでもスレ立てたら?

651:デフォルトの名無しさん
12/04/20 23:55:05.77
ほんとだよな。

652:デフォルトの名無しさん
12/04/20 23:58:48.56
そりゃごっつぁん、でマダー?tntn
1行目がどうのって意味わかんねえし
セクハラ野郎は嫌いだぜ

653:デフォルトの名無しさん
12/04/21 00:03:29.27
レスを抽出してまとめて読めるからだよ

654:デフォルトの名無しさん
12/04/21 00:04:05.35
興味ない人はNG設定できる副作用もあるよ。

655:デフォルトの名無しさん
12/04/21 02:09:25.93
>>628
ありがとうございます

656:デフォルトの名無しさん
12/04/21 02:09:28.86
MPIってモッピーと読むと言われたが冗談ですよね?

657:デフォルトの名無しさん
12/04/21 02:15:53.72
>>655
それコピペ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch