トップページ⇒tech
146コメント41KB

C言語って簡単だよな

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/10/07(日) 17:30:49
オブジェクト指向なんて意識しなくていいから覚えること少ないし。
型が厳格で、ポインタとかいう変態的な機能があるBASICだと思えば簡単だろ。
こんなので挫折する奴は池沼。
0002デフォルトの名無しさん2007/10/07(日) 17:32:16
2
0003デフォルトの名無しさん2007/10/07(日) 17:35:13
生まれる時代を間違えたな
0004デフォルトの名無しさん2007/10/07(日) 17:54:44
まぁ、昔のプログラマは大したことなかったと言えばそうかもしれん。
今も昔も「アセンブリ言語は難しい」とか言う人は多いが、
8080やらZ80やらのアセンブリ言語なんて、今から見れば単純そのもの。
オブジェクト指向が一般化する前は「C言語は難しい」と当たり前のように言われてきたが、
覚えること自体は今時の言語よりはるかに少ない。

フィギュアスケートに例えるなら、昔なら2回転したら「オー、ミラクル!」とか言われたかもしれんが、
今では3回転しても「普通だね」って思われるようなもんだろ。
0005デフォルトの名無しさん2007/10/07(日) 18:32:37
何を作るかによりけりで各言語の利便性で難易度が変わるのに、
前提条件を明確にせず簡単とか言ってしまっている時点で>>1はプログラマとしての適正がない。
0006デフォルトの名無しさん2007/10/07(日) 18:51:48
言語の習得が容易と言ってるだけだから問題無いだろ
論旨を無視して必要以上に一般化して、他人を否定して
いるだけの人間よりは良い
0007デフォルトの名無しさん2007/10/07(日) 19:35:13
>>5
ちぐはぐな解釈だな。とりあえず日本語でおkとだけ言っておく。
0008デフォルトの名無しさん2007/10/07(日) 19:43:30
だからといってクソスレを立てて言い訳ではなーい!
0009デフォルトの名無しさん2007/10/07(日) 20:33:56
まあ、そうだな
0010デフォルトの名無しさん2007/10/07(日) 21:49:33
>>1
CoreFoundation使ってみ
0011デフォルトの名無しさん2007/10/07(日) 21:53:27
>ポインタとかいう変態的な機能
この程度の理解なら日本だけでも何万人もいるだろうが、
こんな糞スレ勃ててまで主張したがる莫迦は >>1 くらいのものだろうなあ。
0012デフォルトの名無しさん2007/10/07(日) 21:58:04
Aと打ち込んでAと表示する、たったそれだけしかない言語があったとする。
機能が少なければそのぶん習得は容易だ。
だから何だ?

総合的にモノをみられない>>1は無能の極み。
0013デフォルトの名無しさん2007/10/07(日) 22:04:08
Cが難しいみたいなカキコがあると、バカにするレスがつくけど、簡単だって意見があっても反対のレスがつくんだな。
0014デフォルトの名無しさん2007/10/07(日) 22:07:41
簡単とか難しいとか論ずる時点で、
阿呆の入れ墨をして全裸で街を練り歩いているようなもの。
0015デフォルトの名無しさん2007/10/07(日) 22:26:40
#include <stdio.h>
#include <stdlib.h>

void shine(char *vaka);

int main(void)
{
    char *str;
    str = (char *) malloc (sizeof(char) * 11);
    if(!str){
        printf("メモリ確保に失敗!\n");
        return 1;
    }
    str = "itteyoshi!";
    shine(str);
    return 0;
}

void shine(char *vaka)
{
    for(;;){
        printf("%s\n", vaka);
    }
}
0016デフォルトの名無しさん2007/10/07(日) 23:13:38
ハサミは簡単とかいっているのと同レベルなんだが、
何に使うか分からないのにいきなり簡単とか言われても、
>>1の頭が悪いという証明にしかならない。

>>15
メモリの確保がまるまるいらん。
0017デフォルトの名無しさん2007/10/07(日) 23:37:55
>>15
いちおうfree()関数は入れろ。

>>16
動的なメモリの確保をしたほうがメモリの節約になるのでは?
0018デフォルトの名無しさん2007/10/07(日) 23:54:54
その >>1 に必死になって噛み付いてる奴も、だいぶ頭が悪いと思うが
0019デフォルトの名無しさん2007/10/07(日) 23:57:36
>>17
>str = "itteyoshi!";
これで悟れ、しかも節約とか意味不明。
0020デフォルトの名無しさん2007/10/08(月) 00:04:31
std::string str;
str = "itteyoshi!";

メモリの確保と文字列のコピー、C++の方がよっぽど簡単に書けるよな。
0021デフォルトの名無しさん2007/10/08(月) 00:12:23
>>19
動的確保を使わんでも動くが、
必要な分だけ確保して、必要なくなったら開放するのは
別に悪くないと思うのだが。

動きゃいいんだったらstr[100]とかやって配列でガッポリ確保すりゃいいわけだが、
馬鹿っぽいやりかただし。
0022デフォルトの名無しさん2007/10/08(月) 00:18:48
>>21
だからメモリ確保云々以前にプログラムが間違ってるんだよ。
なんでそんな基本的な部分に気がつかないんだ?
0023デフォルトの名無しさん2007/10/08(月) 00:24:06
>>22
エラーなしで普通に動くと思うが。
なぜmallocしとるのかといえば、
"itteyoshi!"を納めるのに必要なメモリ分だけ動的に確保しておけば、
あとで文字列が不要になったときにfree(str)で開放できるからだろ。
まぁ、このプログラムの場合は役に立ってないが、
メモリの動的確保のサンプルならばこれでいいのでは?

あなたはおそらく動的確保のメリットをわかってないし、
使ったこともないのだね。
0024デフォルトの名無しさん2007/10/08(月) 00:25:06
釣りか。
0025デフォルトの名無しさん2007/10/08(月) 00:26:11
× str = "itteyoshi!";
○ strcpy(str,"itteyoshi!");
0026デフォルトの名無しさん2007/10/08(月) 00:33:20
配列とポインタの違い

配列ではこうできない。
char str[] = "Hello";
str = "Goodbye"; /* これは間違い */

一方ポインタでは,
char *str = "Hello";
str = "Goodbye"; /* これは通る */
0027デフォルトの名無しさん2007/10/08(月) 00:36:05
>>23
>あなたはおそらく動的確保のメリットをわかってないし、
>使ったこともないのだね。

その前に文字列の扱いとポインタについてやり直せ
確保したアドレスの入っているポインタを上書きしたら、確保した意味がない
初心者より酷いぞ
0028デフォルトの名無しさん2007/10/08(月) 00:50:35
> メモリの動的確保のサンプルならばこれでいいのでは?

だめだろw
・せっかく確保しているのに別の領域を示すようにしている
・さらに元の領域は解放してない
0029デフォルトの名無しさん2007/10/08(月) 01:16:14
仕方ない。
俺が直してやろう。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char *str;
    char moji[10] = {'i', 't', 't', 'e', 'y', 'o', 's', 'h', 'i', '!'};
    int num, i;

    num = 10;
    str = (char *) malloc (sizeof(char) * (num+1));
    if(!str){
        printf("Error!\n");
        return 1;
    }

    for(i=0; i<num; i++){
        *(str+i) = moji[i];
    }
    *(str+num) = '\0';
    printf("%s\n", str);

    free(str);

    return 0;
}
0030デフォルトの名無しさん2007/10/08(月) 01:26:03
文法覚えるのが簡単か?ってことなら簡単だろ。
「プロパティのオブジェクトがメソッドでポリモーフィズムだからカプセル化で継承が・・・」
とかいう話が無い分だけ。
0031デフォルトの名無しさん2007/10/08(月) 01:34:58
> プロパティのオブジェクトがメソッドでポリモーフィズムだから

アルファがベータでイプシロンした、なぜか? を思い出したよw
0032デフォルトの名無しさん2007/10/08(月) 01:37:19
Cの文法覚えりゃ何でも出来るからな。
0033デフォルトの名無しさん2007/10/08(月) 01:42:47
みんなに聞きたいんだけどよー
Cのユニットテストツール何つかってる?
0034デフォルトの名無しさん2007/10/08(月) 01:53:33
C では使ってないな
0035デフォルトの名無しさん2007/10/08(月) 01:55:54
CUnit
0036デフォルトの名無しさん2007/10/08(月) 01:57:34
>>35

ソースくれ
0037デフォルトの名無しさん2007/10/08(月) 02:00:20
>>36
おいよ

http://sourceforge.net/projects/cunit/
0038デフォルトの名無しさん2007/10/08(月) 02:02:30
>>37
サンクス
0039デフォルトの名無しさん2007/10/08(月) 02:12:08
Cだとめんどくせーw
ttp://agileware.jp/agileYokocho/articles/c_tdd/
0040デフォルトの名無しさん2007/10/08(月) 02:31:32
>>39
たしかにTDDのありがたみが分からないよな
ってかこんなのあった
簡単に使えるみたいなこと書いてある
https://sourceforge.jp/projects/cue/
0041デフォルトの名無しさん2007/10/08(月) 02:37:17
>>40
CUnitよりいいかも
0042デフォルトの名無しさん2007/10/08(月) 02:44:57
俺以外にもそういう奴いる?を一体どういう解釈したんだw
0043デフォルトの名無しさん2007/10/08(月) 02:47:23
誤爆。悪い。。('A`)
0044デフォルトの名無しさん2007/10/08(月) 03:00:30
>>40
CUnitと似てるとおもったら
CUnitをベースに開発したらしい
0045デフォルトの名無しさん2007/10/08(月) 10:15:06
文法は簡単だよな

問題はそこらじゅうに罠が張り巡らされている事
0046デフォルトの名無しさん2007/10/08(月) 10:34:24
いくら罠があっても>>15みたいな馬鹿なプログラムを書くのはまれ。
0047デフォルトの名無しさん2007/10/08(月) 11:55:35
>>40
大学1年生向きだな
0048デフォルトの名無しさん2007/10/08(月) 13:18:57
C言語は簡単ていうけどしばらく離れると標準関数の仕様とかすぐにすっぽ抜ける
0049デフォルトの名無しさん2007/10/08(月) 13:31:41
8080アセンブラって簡単だよな
Z80アセンブラって簡単だよな
N88BASICって簡単だよな
0050デフォルトの名無しさん2007/10/08(月) 13:41:55
ま、やっぱRubyサイキョって事で。
一度使ったら二度と忘れないくらい簡単やしな
0051デフォルトの名無しさん2007/10/08(月) 14:27:16
ま、やっぱ○○サイキョって事で。
一度逝ったら二度と帰れないくらい簡単やしな
0052デフォルトの名無しさん2007/10/08(月) 14:33:24
>>48
忘れたら調べりゃいいだけだ
0053デフォルトの名無しさん2007/10/08(月) 14:42:25
#include <stdio.h>
main(){while(printf("%s\n","itteyoshi!"));}
0054デフォルトの名無しさん2007/10/08(月) 15:04:38
このスレで頑張ってるやつて、Cが簡単ってことになるとプライドがズタズタになるやつなんだろうな。
0055デフォルトの名無しさん2007/10/08(月) 15:06:44
誰も頑張ってないじゃん
簡単という意見が大半だぞ
0056デフォルトの名無しさん2007/10/08(月) 15:27:12
構文の意味を理解するには簡単な言語だと思うね。
IDE使って簡単なのを作るだけならC#とかJavaとかのほうが簡単そうな感じ。
0057デフォルトの名無しさん2007/10/08(月) 15:40:11
先進国ではC#が基本言語に登録されてるみたいね
Cの時代は終わりつつある
俺が中学のころ親にプログラミングやりたいっていったらBASICやれといわれたんだが
今思えばこれは明らかにミスだろうと思った
Cは誰でもわかるところがミソ
子供にプログラミングやらせるならCやったほうがかなりの近道
高校ではCOBOLやっているが死ぬほどつまらない
0058デフォルトの名無しさん2007/10/08(月) 15:47:00
BASICは元々教育用言語なわけで
ある意味Cより簡単じゃんよ
0059デフォルトの名無しさん2007/10/08(月) 15:50:21
Cの知識があれば他の言語へ移るときさほど苦労はしないが
BASICは文法が似てるといってもやはりJAVAやC++とは程遠いので
世の中ではやっているJAVAやC++へ進むためにもそれらがお手本にしたCを勉強するのが
初歩ではいいのではないかと思います
0060デフォルトの名無しさん2007/10/08(月) 15:52:07
>>57
Cの時代が終わりつつあるというよりも
流行の言語から普通の言語になっただけっぽいが。
0061デフォルトの名無しさん2007/10/08(月) 15:58:00
正直なところこれからは組み込みプログラマーが儲かる時代が来ると思うんだがどうだろう
0062デフォルトの名無しさん2007/10/08(月) 16:09:33
組み込みは最近C++にほんのりシフト気味
0063デフォルトの名無しさん2007/10/08(月) 16:13:32
もうC言語覚えてから4年近く経って完全に忘れてしまったのだが、
初心者にとってプログラミング言語を覚えることの難しさ、、、って一体なんだ?
0064デフォルトの名無しさん2007/10/08(月) 16:15:11
概念
文法を覚えたとしてもこれがどうしてこうなるのかって事を考えてしまうこと
これをすればこうなるが分かっていれば初心者はいいのにそれ以上を求めてしまう
ゆえに何が分からないのか自体が分からなくなる

人のコードを見てもどうしてこうなるの?がまずくる
自分でいじってみれば一目瞭然なのに
0065デフォルトの名無しさん2007/10/08(月) 16:15:54
>>63
それ覚えた気になってただけだよ
0066デフォルトの名無しさん2007/10/08(月) 16:18:06
>>65
? なにか勘違いしてないか?
C言語を、完全に忘れてしまったわけではないぞ。念のため。
0067デフォルトの名無しさん2007/10/08(月) 16:22:45
日本語下手だね
0068デフォルトの名無しさん2007/10/08(月) 16:26:04
自分の読解力も疑ったほうがいいよ。
0069デフォルトの名無しさん2007/10/08(月) 16:27:57
--
63 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/08(月) 16:13:32
もうC言語覚えてから4年近く経って完全に忘れてしまったのだが、
--
66 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/08(月) 16:18:06
>>65
? なにか勘違いしてないか?
C言語を、完全に忘れてしまったわけではないぞ。念のため。
--
何この阿呆。
0070デフォルトの名無しさん2007/10/08(月) 16:28:32
読解力というより訂正力だな
0071デフォルトの名無しさん2007/10/08(月) 16:38:35
普通にこういう言い回しするだろ?本とか読まない人?
0072デフォルトの名無しさん2007/10/08(月) 16:41:49
もうC言語覚えてから4年近く経って忘れてしまった部分もあるんだが
これが正解
0073デフォルトの名無しさん2007/10/08(月) 16:43:13
忘れた、は次の行の「初心者にとって〜難しさ」にかかってるんだけど。
0074デフォルトの名無しさん2007/10/08(月) 16:45:31
なんでそんなに必死なの
0075デフォルトの名無しさん2007/10/08(月) 16:46:31
大学のPC室で「せぐめんてぃしょんっ!!!何これwスイーツ(笑)」って叫んでる女の子がいたから
ありがちなバグとかいろいろ教えてあげたら食事に誘われました\(^O^)/
やっててよかったC言語\(^O^)/
0076デフォルトの名無しさん2007/10/08(月) 16:47:19
やさしく説明してあげてるのに必死とはなんだ(怒)
0077デフォルトの名無しさん2007/10/08(月) 16:47:56
バカ女はお前に任せた
0078デフォルトの名無しさん2007/10/08(月) 16:53:29
自分が間違いではないと思い込めるそのパワーに脱帽w
0079デフォルトの名無しさん2007/10/08(月) 16:54:14
時には認めることも大切だよねwwwwwww
0080デフォルトの名無しさん2007/10/08(月) 17:01:09
お互いじゃない?
そもそも引っ掛けて来た側が皮肉だけで指摘出来てない池沼なのは。。。
0081デフォルトの名無しさん2007/10/08(月) 17:36:35
おまいらの使ってるプログラム言語おしえてくれ
おれはCがいちばん好きで、あとRuby、たまにScheme
0082デフォルトの名無しさん2007/10/08(月) 18:21:41
趣味で作るPC用プログラムは基本的にGUIならC#でCUIならCかC#で書く
C#でGUI作ってCでDLLを作って組み合わせる事も有る
あとはJavaでiアプリとかPHPも経験ある
最近の仕事はJavaがメイン
一番好きなのはC#でCは2番目だな
0083デフォルトの名無しさん2007/10/08(月) 20:36:54
>>31
違うよ。
アルファがベータをカッパらったらイプシロンした、なぜだろう?
だろ。
0084デフォルトの名無しさん2007/10/08(月) 21:00:34
俺はC#を使う
CGIはPHPだが、今では別の言語に乗り換えるべきかと思っている
仕事ではまた違う言語を使う
0085デフォルトの名無しさん2007/10/08(月) 22:23:10
CGIもCで書こうぜ。
速度が段違い。

C#も好きだがunsafeコードだらけになるw
0086デフォルトの名無しさん2007/10/09(火) 01:38:44
>>85
CGIってそんなに速度が重要か?
0087デフォルトの名無しさん2007/10/09(火) 01:43:40
>>40を使ってCGIのテストをしたいのだが、できるのかな?

0088デフォルトの名無しさん2007/10/09(火) 07:06:28
>>86
ヒント:2ちゃん
0089デフォルトの名無しさん2007/10/09(火) 08:19:00
bbs.cgiはPerl
0090デフォルトの名無しさん2007/10/09(火) 09:47:50
自分はJavaやC#ばっかりだったので、CとかC++で組み込みみたいなものやってる
人たちを尊敬してしまう。

ただ、どうなんだろうな。「え?アセンブリも分かるの?凄いね」っていうのと同じなの
かも知れない。

ということで、次は関数型、HaskellとかLispとか勉強してます。ポインタとか、ちょっと
何ていうんだろうか、ガス使わないで火を起こせるのが凄いっていうのに近い気がして
ちょっと・・・。
0091デフォルトの名無しさん2007/10/09(火) 11:18:49
>>90
お前はまさに、日記はチラシの裏に書いてろ。
0092デフォルトの名無しさん2007/10/09(火) 12:19:33
>>90
おまいは火を熾すのにガスを使うのか? 珍しいな。
0093デフォルトの名無しさん2007/10/09(火) 14:32:54
アセンブラやんなよ。
Lispに使い道あるかって〜と「え〜」で終わり。

今、実用性がある言語はJava、C++、SQLの3つだけ。
あとは共同開発に向かないので「マニアのお遊び化」してる。
0094デフォルトの名無しさん2007/10/09(火) 14:34:46
で、遊ぶならPerl、PHP、アセンブラの3つだろう。

計6つ知ってれば何も怖いものはない。
0095902007/10/09(火) 15:08:55
いや、C#も3.0からは関数型言語のアイデアを取り入れているし、Javaだってそういう
方向に動いているでしょ?

命令型言語としては、Java以降っていうのは量的な変化しか無いと思う。ライブラリが
充実してるとか。

次のステップとしては関数型言語でしょ。参照透過性とか、今の命令型言語では限界がある。
0096デフォルトの名無しさん2007/10/09(火) 15:28:29
COBOLでもやってた方がいいね。
あるいはMathematicaか。

なぜ6つを薦めたか?
好きな物以外のことでもちゃんと勉強しておかないと、周りと会話が通じなくなると思う。
0097デフォルトの名無しさん2007/10/09(火) 17:30:45
用途を明確にしないで言語の名前を列挙する奴は、プログラマの適性がゼロ。
ハサミだカッターだ、のこぎりの方がたくさん切れるって、頭が悪いにもほどがある。
0098デフォルトの名無しさん2007/10/09(火) 18:03:25
どうぐにつかわれるのではない。
どうぐはつかいこなすもの。
ぷろならつかえてあたりまえ。

みんなわかってるのに。
あたまがわるいとかばかとか、いちいちじぶんのことかかなくていいよ。
0099デフォルトの名無しさん2007/10/09(火) 18:05:34
さて、Haskellでも勉強するか。
0100デフォルトの名無しさん2007/10/09(火) 18:07:57
ウザいからHaskellスレでやれ。

関数型プログラミング言語Haskell Part7
http://pc11.2ch.net/test/read.cgi/tech/1174211797/l50
0101デフォルトの名無しさん2007/10/09(火) 20:39:06
職人は常に自分の技術を磨いていくものだが、
使えて当たり前とか勘違いしている奴は成長しない。
0102デフォルトの名無しさん2007/10/09(火) 22:25:08
>83 あぁ。それだ。

簡単だよな
0103デフォルトの名無しさん2007/10/11(木) 03:41:23
>>40使ってみた人いる?
0104デフォルトの名無しさん2007/10/11(木) 05:20:47
C言語は30個くらい覚えればいいだけだからアルファベットを書ける様になるより最初は簡単。

標準ライブラリのソースを覗いて、その簡単な命令群を鬼のように組み合わせて実現している
関数の中身を見て感動。

自前で実装しようとして涙目。
0105デフォルトの名無しさん2007/10/11(木) 06:25:01
C言語のどこが簡単なのか分からん。
何が処理系依存で何がコンパイラの独自拡張なのか把握するだけでも一苦労なのに。
0106デフォルトの名無しさん2007/10/12(金) 00:52:47
C言語が簡単だとかいってるやつは柴田本とか読んで、
サンプルプログラムを作って、無料のコンパイラでexeファイル
作って、簡単だなんて言ってるだけなんじゃねぇの

実務では格段の差を感じたのだが・・・
保守案件で他人のソースコード読んだことある?c++とcがごっちゃになったのとか、
スパゲッティコードとか
0107デフォルトの名無しさん2007/10/12(金) 02:52:53
>>103
カラー表示になって見やすくなったな
Win用にも移植してほしい
0108デフォルトの名無しさん2007/10/12(金) 08:17:24
スパゲッティコードって何?
0109デフォルトの名無しさん2007/10/12(金) 09:48:57
>>106
C++とCが混ざってるのは別にそこまで問題じゃなくね?
0110ぉぃぉぃ2007/10/12(金) 10:32:35
>>108
スパゲッティのように、均一な長さと太さを持った整然としたコードのこと。
0111902007/10/12(金) 12:08:07
>>106
> 保守案件で他人のソースコード読んだことある?c++とcがごっちゃになったのとか、
> スパゲッティコードとか

そういうのは言語の難しさ、ということとは関係がない。
0112デフォルトの名無しさん2007/10/12(金) 12:10:20
>>110
教えてくれてサンクス。
0113デフォルトの名無しさん2007/10/12(金) 21:23:55
信じちゃったの
0114デフォルトの名無しさん 2007/10/13(土) 05:00:04
焼きそばコードって言えばわかるんじゃね?

わかるわけねーか
0115デフォルトの名無しさん2007/10/13(土) 05:20:58
えへへー
0116デフォルトの名無しさん2007/10/13(土) 06:26:31
>>112
スパゲッティコードは、スパゲッティのようにからみあって複雑なコードのことだよ
>>110にだまされるな!!
0117デフォルトの名無しさん2007/10/13(土) 08:35:09
普通、スパゲッティって複雑に絡み合ったりしないよな。
0118デフォルトの名無しさん2007/10/13(土) 10:21:08
きっと作った直後はまだ絡まなくて、
時間が立つとほぐすことすら出来なくなることを示唆してんだよ。

と、こじつけてみる
0119デフォルトの名無しさん2007/10/13(土) 11:09:15
絡まないように油を絡めるだろ。常考
0120デフォルトの名無しさん2007/10/13(土) 11:34:04
絡まないようにコメントを絡めるだろ。常考
0121デフォルトの名無しさん2007/10/13(土) 17:44:15
エコナ
0122デフォルトの名無しさん2007/10/13(土) 21:40:05
で、結局、スレのテーマなんだったっけ
0123デフォルトの名無しさん2007/10/13(土) 21:42:03
パスタをほぐすのに適した油はなにか
0124デフォルトの名無しさん2007/10/13(土) 22:11:21
コードをほぐすのに適したコメントはなにか
0125デフォルトの名無しさん2007/10/13(土) 22:40:27
スパゲティーはソースを絡めるんだよ
0126デフォルトの名無しさん2007/10/13(土) 23:15:58
タバスコもいっしょにな
0127デフォルトの名無しさん2007/10/14(日) 05:34:13
俺の経歴

Java → C++ → C

Cでオブジェクト指向できれば一人前だな、組み込みでは唯一の選択肢かも
速度については・・・何も言うまい
0128デフォルトの名無しさん2007/10/14(日) 05:36:02
たとえばこんな感じ

/* ウィンドウ クラス */
typedef struct{

/* ウィンドウの状態を定義 */
#define WINDOW_HIDE 0 /* 不可視状態 */
#define WINDOW_MINIMUM 1 /* 最小化状態 */
#define WINDOW_VISIBLE 2 /* 可視状態 */
#define WINDOW_MOVE 3 /* ウィンドウは移動中 */
#define WINDOW_RESIZE 4 /* ウィンドウはサイズ変更中 */

void* subclass; /* サブクラスへのポインタ */
Component component; /* コンポーネント本体 */
Button close_button;
Button taskbar_button;

char* title; /* ウィンドウのタイトル */
BYTE* icon; /* ウィンドウのアイコン */

BYTE status; /* 発生したイベントの種類 */
int drag_startx; /* ドラッグイベントの発生したx座標 */
int drag_starty; /* ドラッグイベントの発生したy座標 */

/* イベント拡張 */
void (*resize_action)(Component*); /* ウィンドウサイズを変えた時の処理 */
void (*close_action)(Component*); /* ウィンドウを閉じた時の処理 */
void (*paint)(Component*); /* 描画処理 */

} Window;
0129デフォルトの名無しさん2007/10/14(日) 11:25:05
最近の組み込み環境だとC++提供してるのも結構ある印象。
armとかshとか。

C言語でオブジェクト指向は個人的には無駄な努力だと思う。
機能モジュールとして割り切っちまった方が分かり易い。

余談。
>>128の例はあんまりよろしくないように見える。
・Windowの生成/破棄関数もメンバに入れておくべき
・Componentが親クラスのつもりだとすると、
 継承すればするほどメンバへのアクセスが煩雑になる。
 というか、メンバにアクセスするために、
 何を継承したクラスなのか意識せにゃならんのはダメだろ。

結局Cでクラスっぽいもの作ろうと思うと、gtkみたいなことになるんじゃないのかなぁ。
Cで継承はムリがある。
(プリプロセッサでムリすれば何とかなりそう?
 例えばメンバを全部別ファイルにして#includeするとか。
 そんなソース見たくねぇ・・・)

あとは関数ポインタやら変数やらをリストの構造体で持って、
プロトタイプベースっぽくするとか。
組み込みには、っていうか仕事ではまったくもって向かないケド・・・。
0130デフォルトの名無しさん2007/10/14(日) 16:00:34
CoreFoundation舐めんなよ
0131デフォルトの名無しさん2007/10/15(月) 22:12:06
>最近の組み込み環境だとC++提供してるのも結構ある印象。
>armとかshとか。

自分もそれ使ってたんだけどさ、先輩がそれを見て一言

「まさかWindows mobileのアプリ作っておいて、
『組み込みやってます』なんて言ってるんじゃないのか?(・∀・)ニヤニヤ 」

いや、そうなんだけどさ
0132デフォルトの名無しさん2007/10/15(月) 22:42:16
C++でもりもり組み込み開発してます
RTTI使えないとか例外禁止とか制限はあるけど
0133デフォルトの名無しさん2007/10/16(火) 02:13:57
WindowsAPIのプログラムが、Cでクラスを作ることじゃないのか?
(正確には、WindowsSDKみたいな物を作ることか)
0134デフォルトの名無しさん2007/10/16(火) 22:31:52
>>133
なんか良く分からんけど、もそっと詳しく聞いてみたい気もする。
ハンドル持ち回してグリグリ操作するところらへんの話?
0135デフォルトの名無しさん2007/10/18(木) 13:29:41
Gtk+のC APIはオブジェクト指向C APIらしいよ。
ま、面倒なだけつーかんじだけど、バインディングは作りやすいだろうね。
0136デフォルトの名無しさん2007/10/18(木) 15:17:53
>>131

でもPICやAVRのような完全な組み込みようでもCが提供されている時代だから…
(Z80やら6502やら8085は言わずもがな…)
0137デフォルトの名無しさん2007/10/18(木) 22:10:45
Cでオブジェクト指向っつったらCore Foundationじゃないの?
0138デフォルトの名無しさん2007/10/19(金) 18:27:47
Cと最低限のマクロでオブジェクト指向のプログラムを書くメソッドがあったと思う。
構造体の使いかたはこうで、継承はこう書け、みたいな方法論が。
0139デフォルトの名無しさん2007/10/22(月) 05:16:43
>>134
WndProcとかDlgProcのメッセージ処理の部分が、C++のクラス書くのと同じじゃね?
0140デフォルトの名無しさん2007/11/06(火) 19:26:08
このスレを見ている人はこんなスレも見ています。(ver 0.20)
もし美少女ロボが自作できたら? 3体目【引越】 [未来技術]
■☆ 人工知能全般 Mode18 ☆■ [哲学]
長門有希が質問に答えるスレ [プログラマー]
0141デフォルトの名無しさん 2007/11/06(火) 21:52:05
http://sakura.bb-west.ne.jp/spr/damayan/saruc/object/index.html
ここのことかな
0142デフォルトの名無しさん2008/01/21(月) 20:07:59
Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、
 本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)
 今になって分かりました。
彼らもまた、理解できていなかったのです。
 プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。
 私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。
そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。
 興味がある方はどうか、下のサイトをみてみてください。
http://mori.eco.to/
0143デフォルトの名無しさん2008/01/21(月) 23:44:58
プロでレベル低すぎるて、何それ。
0144デフォルトの名無しさん2008/01/21(月) 23:57:49
実際そんなもんだよ。
なんとなく専門行ってなんとなく就職してって感じで技術的向上心がない奴は
いくらでもゴロゴロしてる。趣味でバリバリやってる奴の足元にも及ばない。
ただし、顧客にとっての結果が問われる厳しさはあるけど。
ウンココードをついでに直して、結果エンバグ…なんてしたら死刑。
0145この程度なら池沼にも理解できるはず2008/01/23(水) 22:03:00
/*
** ハイブ(最上位レジストリキー)の名前を短い名前に変換する。
** 例 HKEY_CURRENT_USER\Software → HKCU\Software
*/

#define NULL 0x0

void BaibKeyName_LongNameToShortName(char *);

char BaibKeyLongName[7][23] = { "HKEY_CLASSES_ROOT\\", "HKEY_CURRENT_USER\\", "HKEY_LOCAL_MACHINE\\", "HKEY_USERS\\", "HKEY_PERFORMANCE_DATA\\", "HKEY_CURRENT_CONFIG\\", "HKEY_DYN_DATA\\" };
char BaibKeyShortName[7][23] = { "HKCR\\", "HKCU\\", "HKLM\\", "HKU\\", "HKEY_PERFORMANCE_DATA\\", "HKCC\\", "HKEY_DYN_DATA\\" };
int BaibKeyLongNameLen[7] = { 18, 18, 19, 11, 22, 20, 14 };
int BaibKeyShortNameLen[7] = { 5, 5, 5, 4, 22, 5, 14 };

void BaibKeyName_LongNameToShortName(char *key)
{
       int i; char *tmpkey;
       if((tmpkey = malloc(strlen(key))) != NULL) {
              for(i = 0; i != 7; i++) {
                     if(!strncmpi(key, BaibKeyLongName[i], BaibKeyLongNameLen[i])) {
                            strcpy(tmpkey, BaibKeyShortName[i]);
                            strcpy(tmpkey + BaibKeyShortNameLen[i], key + BaibKeyLongNameLen[i]);
                            strcpy(key, tmpkey);
                            break;
                     }
              }
              free(tmpkey);
       }
}
0146デフォルトの名無しさん2008/01/23(水) 22:10:16
char BaibKeyLongName[7][23] = { "HKEY_CLASSES_ROOT\\", "HKEY_CURRENT_USER\\", "HKEY_LOCAL_MACHINE\\", "HKEY_USERS\\", "HKEY_PERFORMANCE_DATA\\", "HKEY_CURRENT_CONFIG\\", "HKEY_DYN_DATA\\" };
char BaibKeyShortName[7][23] = { "HKCR\\", "HKCU\\", "HKLM\\", "HKU\\", "HKPD\\", "HKCC\\", "HKDD\\" };
int BaibKeyLongNameLen[7] = { 18, 18, 19, 11, 22, 20, 14 };
int BaibKeyShortNameLen[7] = { 5, 5, 5, 4, 5, 5, 5 };
■ このスレッドは過去ログ倉庫に格納されています