新C言語を作ろうat TECH
新C言語を作ろう - 暇つぶし2ch2:デフォルトの名無しさん
07/07/21 18:29:25
D言語で

3:デフォルトの名無しさん
07/07/21 18:58:52
>>1
この素人め
お前には無理
削除依頼出しとけ

4:デフォルトの名無しさん
07/07/21 19:39:27
コンパイラ誰が作ってくれるんだよ

5:デフォルトの名無しさん
07/07/21 19:44:57
変数は文字列型と実数型のみで。

6:デフォルトの名無しさん
07/07/21 19:45:29
実数は誤差なしで

7:デフォルトの名無しさん
07/07/21 19:51:49
インタプリタで。

8:デフォルトの名無しさん
07/07/21 19:57:18
Interpreter C言語

9:デフォルトの名無しさん
07/07/21 20:20:15
>>1
それなんてC++

10:デフォルトの名無しさん
07/07/21 20:24:42
ぐぐらずに質問。
C++ってjavaみたいにnew演算子で動的にオブジェクト生成できるけど、
あれってC++にもガーベージコレクションがついてるってこと?
VMでもないのにどうなってるの?
コンパイル時にコンパイラが
スコープとか計算してメモリ開放処理を付け加えてるの?

11:デフォルトの名無しさん
07/07/21 20:26:06
>>10
newしたらdeleteしなきゃならん。
mallocしたらfreeするのと同じ。

12:デフォルトの名無しさん
07/07/21 20:27:43

>コンパイル時にコンパイラが
>スコープとか計算してメモリ開放処理を付け加えてるの?
じゃあこの機能欲しいね。

13:デフォルトの名無しさん
07/07/21 20:29:58
最近の小学校は夏休みの宿題にC言語を作らせるのか

14:デフォルトの名無しさん
07/07/21 20:32:27
コンパイラは作らない。
機能内容と実装方法の提案だけ。

15:デフォルトの名無しさん
07/07/21 20:34:23
といっても、JavaとかC++とかC#とか他ruby、関数型言語の
後追いをしても仕方がないので
あくまでもC言語をベースに革新的な言語を作る

16:デフォルトの名無しさん
07/07/21 20:57:49
>>10
> コンパイル時にコンパイラが
> スコープとか計算してメモリ開放処理を付け加えてるの?
scoped_ptrやshared_ptrならまさにそんなことをやってくれる。

17:デフォルトの名無しさん
07/07/21 21:06:29
言語仕様はそのままでDirectXかopenGLのプログラムしかつくれないC言語は?
C+ライブラリの開発環境だとめんどくさいことが多い。
最初から3Dを意識した仕様にしてみては?



18:デフォルトの名無しさん
07/07/21 21:23:37
>>17
言語仕様がそのままなら、一体何をするっての?バカだろ

19:デフォルトの名無しさん
07/07/21 21:42:32
C++やObjective-Cに秋田から
Cでいいや

20:デフォルトの名無しさん
07/07/21 21:51:41
だが、今更Cに戻る気にもなれない。

21:デフォルトの名無しさん
07/07/21 22:01:38
言語使用って言ったのが悪かった。
構文はそのままって意味。

22:デフォルトの名無しさん
07/07/21 22:08:39
>>21

nara
Java
demo
yookune?


23:デフォルトの名無しさん
07/07/21 22:16:42
重箱の隅

24:デフォルトの名無しさん
07/07/21 23:04:04
Objective-C
C++
D

好きなのを選ぶヨロシ。

25:デフォルトの名無しさん
07/07/21 23:16:14
車輪の再発明スレか

26:デフォルトの名無しさん
07/07/21 23:34:21
D言語改良するんだったら期待するのに。

27:デフォルトの名無しさん
07/07/22 07:32:34
C系の言語にはまだ型推論の導入された言語ってないんじゃね?

28:デフォルトの名無しさん
07/07/22 09:01:12
でもさ、ラムダ式ベースの構文じゃないのに
型推論って導入できるの?

あ、構文木をラムダ式に変換すればいいだけなのかな

29:デフォルトの名無しさん
07/07/22 09:03:09
C++0xでどうなるか期待

30:デフォルトの名無しさん
07/07/22 09:06:35
>>27
DとかC# 3.0とか

31:デフォルトの名無しさん
07/07/22 09:18:10
ところでC++の例外処理ってどうなってるの?
VMもないのにどうやって検出されるの?

32:デフォルトの名無しさん
07/07/22 09:38:08
setjump/longjumpを応用したり、 (g++のsjlj eh)
OSが例外処理を持っていたり。(WindowsのSEH)

33:デフォルトの名無しさん
07/07/22 09:57:23
>>32
1つめのはコンパイル時に自動挿入ですか?(setjump/longjump)

34:デフォルトの名無しさん
07/07/22 10:00:15
どう見てもバグであろう部分を、自動的に補正してくれるバグ推論ができたら、是非宜しくお願い致します

35:デフォルトの名無しさん
07/07/22 10:10:37
>>33
それは当然。
例外処理なんてようするに関数を越えたジャンプにデストラクタの後片付けを入れただけ。
検出するなんてものではないと思う。

36:デフォルトの名無しさん
07/07/22 11:36:08
>>34
もっと酷いバグ作りこむかもしれないけど、それでいい?

37:デフォルトの名無しさん
07/07/23 23:19:17
変数名や関数名に日本語が使えるようにしてほしい。
プログラムの保守性が絶対に上がるよ。

38:デフォルトの名無しさん
07/07/23 23:28:02
使えたとしても使わないのが多数じゃないか?
Javaは使えたよな?C++も使えるんだっけ?
ジョークプログラムでたまに見るが、?が頭を駆け巡る。
慣れの問題で済む程度じゃないと思う。

39:デフォルトの名無しさん
07/07/23 23:42:28
変換とかさせる言語はクソ
ひ○わり
なで○こ

40:デフォルトの名無しさん
07/07/24 01:48:24
C にクラス「だけ」を追加した言語が欲しい
それ以外の、C の素朴さを損なう様な追加機能は要らない
カプセル化はオブジェクト指向の本質ではないので要らない
テンプレートでメタプログラミングとかも要らない
総称関数も要らない
GC も要らない
クロージャはあったら嬉しいけど、動的クロージャなら何の役にも立たない

本来の意味の C w/ Class が欲しい
GLib とかじゃなくて

みたいな事を考えてた事もあった

41:デフォルトの名無しさん
07/07/24 02:51:47
C って素朴か……?

42:デフォルトの名無しさん
07/07/24 05:38:49
とりあえずC言語に足りないものを全て列挙してみようか

43:デフォルトの名無しさん
07/07/24 13:17:34
処理系依存

44:デフォルトの名無しさん
07/07/24 13:20:01
排他的再帰

45:デフォルトの名無しさん
07/07/24 16:59:44
マンコ

46:デフォルトの名無しさん
07/07/24 19:20:20
自動コーディング

47:デフォルトの名無しさん
07/07/24 19:58:38
型推論と例外処理とクラスだけのオブジェクト指向とnew演算子

48:デフォルトの名無しさん
07/07/24 20:04:38
逆にプリプロセッサ要らない。
何らかの代替機能を用意した上で廃止してくれ。

49:デフォルトの名無しさん
07/07/24 20:18:16
java 使ってると C のマクロが非常に恋しくなる。マクロは残してもらいたいなぁ。

50:デフォルトの名無しさん
07/07/24 20:45:39
むしろlisp級にまでマクロ強化


51:デフォルトの名無しさん
07/07/24 21:00:44
結局C++が出来上がる気がするな

52:sage
07/07/24 21:09:48
C+++

53:デフォルトの名無しさん
07/07/24 21:38:12
C--

54:デフォルトの名無しさん
07/07/24 21:39:30
>>50ではないが、俺もマクロの強化を望む。
lisp の defmacro の強力さを知らんのだよ。
Symbolics の FORTRAN はマクロによって lisp に展開されていた。
餓鬼どもには想像も出来んだろうがな(w


55:デフォルトの名無しさん
07/07/24 21:39:40
実はC言語はこんなこともできないのです。
int f(int n) { return n + 1; }
int g(int n)
{ int x = f(n);
{ int x = f(x);
{ int x = f(x);
return x;
}
}
}
int main() {
printf("g()=%d\n", g(1));
return 0;
}

さて、g(1)はいくつを返すでしょう?
このコードに対してエラーも警告も出さなかったコンパイラがあったら要注意です。
C言語は { int x = f(x); ~} を期待通り処理しません。
初期化式中のxは変数宣言xによって既に親を上書きしています。
つまりこの規則は変数のアドレスを再帰的に初期化式に
適用したいというかなり特殊な状況以外に全く役に立ちません。
h() {
struct _tag {
struct _tag *next, *prev;
} a = {&a, &a};
printf("&a=%d a.next=%d a.prev=%d\n", &a, a.next, a.prev);
}
変数のアドレス限定なのは、初期化式中に変数の値を参照しても
何の意味もないからです。もし参照してたらエラーにすべきでしょう。


56:デフォルトの名無しさん
07/07/24 21:42:19
?


57:デフォルトの名無しさん
07/07/24 21:47:19
int g(int x)
{ int x = f(x);
{ int x = f(x);
{ int x = f(x);
return x;
}
}
}
だとエラーになった
: error C2082: 仮引数 'x' が再定義されました。
int g(int n)
だと警告
: warning C4700: 値が割り当てられていないローカルな変数 'x' に対して参照が行われました。

(VC6SP4)


58:デフォルトの名無しさん
07/07/24 21:47:59
>>55
で、お前はそれがどうなったらいいと思う?

初期化式では、初期化対象の変数がまだ見えないようにするのか、
そもそもコンパイルエラーになるようにするのか、
はたまたそれ以外の方法があるというのか。

59:デフォルトの名無しさん
07/07/24 21:48:56
では、この辺の規則がしっかりしてるSchemeだとどうなるでしょう。
(define (f x) (+ x 1))
(define (g x)
(let ((x (f x))) (let ((x (f x))) (let ((x (f x))) x))))

(g 1)
=>4
まさに期待通りです。
まったくSchemeは素晴らしいですね。


60:デフォルトの名無しさん
07/07/24 21:51:18
>>55
そんなの当たり前のじゃん…

61:48
07/07/24 21:51:33
>>50
LISPみたいなのだったらありだ。

Cプロセッサは、C自体の字句解析と独立しているから、
IDEの入力支援機能なんかと相性が悪いはず。俺はそれが嫌なんだ。

62:デフォルトの名無しさん
07/07/24 21:53:26
>>57
いきなり関数の引き数と同じ名前で自動変数宣言すんなw

63:デフォルトの名無しさん
07/07/24 21:55:39
むしろ何を期待すれば>>55になるの?

64:デフォルトの名無しさん
07/07/24 22:02:49
>>55-59
そりゃ、変数に対する考え方が違うから当然だろ。
Cの変数つうか識別子は、つまるところ名前付きメモリ領域だからな。

ん、むしろ、これで当然(そしてSchemeも当然)と思える
俺の方がどうかしてるのか?
何か悩んだり面白がったりするものなのか?

65:デフォルトの名無しさん
07/07/24 22:25:36
>>64
どうかしてる。
>>57相当の事をしたいとなると、わざわざ別名を考える必要が
出てきて思考の妨げになるじゃん。


66:デフォルトの名無しさん
07/07/24 22:30:22
変数の初期化式中にその変数自身が含まれるべき、
なんて普通は考えないからな。違うスコープにある方が自然だろ。
C言語が一般的になりすぎたとか、そういう言語に慣れすぎたとかで、
その違和感に気付かないのかもしれないな。

67:デフォルトの名無しさん
07/07/24 22:33:17
変数でどうにかしようと考えるからだ。
C系言語的には、そういうときは変数名じゃなく型名を定義する事を考える。
つまりクラスにする。
あ、Cではクラス無理かw

68:デフォルトの名無しさん
07/07/24 22:37:20
C言語だとマクロに変数が入る時とかで困るんでは。

#define G(n) do { int x = f(n); return x; } while(0)
int g(int n)
{ int m = f(n);
{ int x = f(m);
G(x);
}
}
: warning C4700: 値が割り当てられていないローカルな変数 'x' に対して参照が行われました。


69:デフォルトの名無しさん
07/07/24 22:45:27
その例なら、C99やC++でインライン関数使えばいいよ。

70:デフォルトの名無しさん
07/07/24 22:45:58
すまんこれはマクロでないと無理だなorz

71:デフォルトの名無しさん
07/07/24 22:47:58
>>59のgは
(define (g x) ((lambda (x) ((lambda (x) ((lambda (x) x) (f x))) (f x))) (f x)))
と等価という考え方であり、つまり初期化式は関数適用と同じスコープで
評価されるので、xは親を参照するという事が自然と自明になり、
文脈上のあいまいさもありません。Schemeにはletの他にlet*やletrecもあり、
こういった束縛規則をコントロールできます。
Schemeの変数束縛はとても理に適った設計なのです。

72:デフォルトの名無しさん
07/07/24 22:50:08
何か似たような問題を(もっと実用的な例で)解けるデザパタがあったような。
TMPという手もあるけど、それは今の流れ的にお呼びでなさそうだな

73:デフォルトの名無しさん
07/07/24 22:54:15
>>71
だから変数の考え方が違うと何度言えば

74:デフォルトの名無しさん
07/07/24 22:58:30
つまりboost::lambdaがあるC++最強だな

75:デフォルトの名無しさん
07/07/24 22:59:37
> struct _tag {
> struct _tag *next, *prev;
> } a = {&a, &a};
おれもこれは最初キモイなーと思ったけど、必要悪かな。
グローバル変数のテーブルの初期化とかでちょっとイイ思いができるとか。
(初期化でコードを書かなくて済む)
書き忘れさせないとか、消極的な理由。
今の言語にはコンストラクタがあるから、そういう事気にするのは減ったけど。

76:デフォルトの名無しさん
07/07/24 23:04:40
>>73
そのオメエの考え方がそもそもキモイんだよ、というお話では

77:デフォルトの名無しさん
07/07/24 23:08:10
>>74違うw

78:デフォルトの名無しさん
07/07/24 23:09:27
新しいC言語には
classical int x = f(x) ; // エラー
int x = f(x) ; // OK
という風にclassicalキーワードを用意してみては

struct _tag {
struct _tag *next, *prev;
} a = {&a, &a}; // えらー 無効なaを参照した

79:デフォルトの名無しさん
07/07/24 23:14:31
>>78そのfに渡す初期値はどう決めるのよ?

>>74
boost::scheme…いや何でもない。冗談。

80:デフォルトの名無しさん
07/07/24 23:16:15
ヘッダファイルをやめようぜ

81:デフォルトの名無しさん
07/07/24 23:18:36
同意。
コンポーネント単位でインクルード出来てもいい。

82:デフォルトの名無しさん
07/07/24 23:23:10
確かに>>55は見ただけだと問題なく通りそうではあるし、
移植を繰り返して警告沢山出る様な引継ぎコードの一部だったりして、
しかもテスト環境がたまたまxが普通の値をとったりして、
とんでもない間違いにそのまま気付かないでデスマーチ突入とか
ありそうで笑える。

83:デフォルトの名無しさん
07/07/24 23:30:02
俺ならこんなの発見したら、
即消して書き直すかな…

84:デフォルトの名無しさん
07/07/24 23:41:32
つーか
int x = f(x);
と書いている時点で相当キモイ
こういうキモイ書き方を右辺のxがより広いスコープのxだと思って書く奴はもっとキモイ
そしてそれを期待する奴はどうしようもなくキモイ
そうなる様に言語仕様を変えろという奴は氏んでくれ

85:デフォルトの名無しさん
07/07/24 23:50:26
lisperは害悪ということだけは分かった

86:デフォルトの名無しさん
07/07/25 00:01:30
>>84
お前が子ねカス

87:デフォルトの名無しさん
07/07/25 00:10:35
>>84
DとかC#とかだとコンパイルエラーになったような気がする。

88:デフォルトの名無しさん
07/07/25 00:38:45
階層的なデータ構造をコードで記述していく場合、
同じ名前の変数を宣言したい事がよくある。
例えばこういう画面レイアウトの構造を定義したい時、
--------------------------

[button1]  (空き)  [button2]

--------------------------
      [button3]
       (空き)
      [button4]
-------------------------
こんな感じの定義方法を思いついた。
{ void *resource; lay_t lay = layout_create();
{ lay_t vert = layout_push_vertical(lay);
{ lay_t vert2 = layout_push_vertical(vert);
layout_push_control(vert2, "button1");
layout_push_blank(vert2);
layout_push_control(vert2, "button2"); }
{ lay_t horiz = layout_push_horizontal(vert);
layout_push_control(horiz, "button3");
layout_push_blank(horiz);
layout_push_control(horiz, "button4"); }}
resource = layout_make_resource(lay);
layout_destroy(lay);
return resource;
}
この時、vert2の箇所をそのままvertとしてしまったり、
さらに階層が必要になった時、その変更を元に戻したくなった時、
定義した構造ブロックを他で使いまわしたい時、
などで修正が面倒になる。
まあ適当な構造記述言語でも作ればいいんだけど。

89:デフォルトの名無しさん
07/07/25 00:42:52
ごめん、上で定義した構造は↓の間違い。
--------------------------
      [button1]
       (空き)
      [button2]
--------------------------

[button3]  (空き)  [button4]

--------------------------

90:デフォルトの名無しさん
07/07/25 00:54:31
もうね、関数内でも名前空間を定義できるようにしたら万事解決だよ。
int g(int n)
{
  namespace n1
  {
    int x = f(n);
    namespace n2
    {
      int x = f(n1::x);
      namespace n3
      {
        int x = f(n1::n2::x); //C++的名前空間ならn2::xでもいけると思う
        return x;
      }
    }
  }
}
俺はこんなの欲しくないけど。


91:デフォルトの名無しさん
07/07/25 08:56:14
Perlだと理屈の上ではpackageでそれができる。
しかしそういうキモイ書き方使い方は見たことない。

92:デフォルトの名無しさん
07/07/25 09:23:20
話がズレ始めてるんで一応書いておきますが、
特別な事をしなくとも
#define letend }}
#define let1(type, var, init) \
{ type let_tmp = init; \
{ type var = let_tmp;
#define let2(type, var, init, type2, var2, init2) \
{ type let_tmp = init; type2 let_tmp2 = init2; \
{ type var = let_tmp; type2 var2 = let_tmp2;
実はこれだけでschemeのlet束縛を再現できます。(>>72おしい)

int f(int n) { return n + 1; }
int g(int x)
let2(int, x, f(x), int, y, x)
printf("x=%d, y=%d\n", x, y);
let1(int, x, f(x))
let1(int, x, f(x))
return x;
letend
letend
letend
ここでyの初期化式として使われるxはgの引数のままであり、
f(x)の影響を受けません。g(1)を実行するとx=2, y=1と
表示されることから、Schemeのletと同じ動作だと確認できます。


93:デフォルトの名無しさん
07/07/25 14:06:47
あーブロック2重にするのか。思いつかんかった。


94:デフォルトの名無しさん
07/07/25 19:17:15
コンパイラの実装の手間も考えようぜ。

95:デフォルトの名無しさん
07/07/25 21:52:01
標準Cコンパイラのソースってどこかに無料であったりするの?
それを拡張していけばいいのでは

96:デフォルトの名無しさん
07/07/25 21:54:00
GCCは?
すでに拡張されてるけど

97:デフォルトの名無しさん
07/07/25 22:01:02
tccとか

98:デフォルトの名無しさん
07/07/25 22:05:24
なぜ今更C言語を拡張?
D言語(gdc)やC++0x(g++)をベースに改良すればいいのに。

99:デフォルトの名無しさん
07/07/25 22:28:07
D言語w

100:デフォルトの名無しさん
07/07/26 02:15:52
>>98
D や C++ は太り過ぎだから

101:デフォルトの名無しさん
07/07/26 04:32:28
Cがガンダム、初期C++がゼータ、テンプレ付きC++がダブルゼータだとしたら、
百式ぐらいのをきぼんぬ
つーかシャアが乗ってそうなやつ

102:デフォルトの名無しさん
07/07/26 10:01:54
#include <stdio.h>
int main() {
 printf("Hello, World!\n");
 return 0;
}

とりあえず、これの拡張版はどんな感じになる?

103:デフォルトの名無しさん
07/07/26 12:14:30
#using <mscorlib.dll>

int main()
{
  System::Console::WriteLine("Hello, World!");
}

104:デフォルトの名無しさん
07/07/26 21:36:19


List x = [1,2,3,4,5];
List y = [];
for (int i=0; i < x.length; i++) {
y = x.drop(i)::y;
}

// y = [5,4,3,2,1]

105:デフォルトの名無しさん
07/07/26 21:47:01
import std.stdio;
void main(){
  "Hello, World".writefln();
}

106:デフォルトの名無しさん
07/07/28 10:20:53
おい、おまいらもっと一瞬見ただけで「それは使ってみたい」と思わせるような提案してください

107:デフォルトの名無しさん
07/07/28 10:23:20
#pragmaで切り替えることで新CとC++のコードを混在できる。

108:デフォルトの名無しさん
07/07/28 12:09:34
>>1
は夏休みに入った中学生かなんかだろ
もしかして本当に新C言語ができちゃうかも
そうしたら俺の名前って有名にならね?とか

109:デフォルトの名無しさん
07/07/28 17:11:00
拡張からはじめたほうがいい。
拡張しやすいフリーのコンパイラは?
gccはなんかね・・。
C言語のコアの部分だけひっぱってきて。

110:デフォルトの名無しさん
07/07/28 18:05:58
前方参照が欲しいなぁ。

111:デフォルトの名無しさん
07/07/28 18:34:53
とりあえず今までスレで出たのまとめてみた。

重要なもの
-クラス・テンプレートの追加(>>1)
-型推論と例外処理(>>47)
-マクロ強化(>>50,>>54)
-ヘッダファイルをやめる(>>80-81)
-#pragmaで新CとC++を切り替えられる(>>107)
-前方参照(>>110)

あまり重要じゃないもの
-変数名・関数名で日本語が使えるように(>>37)
-関数内でも名前空間が使えるように(>>90)

矛盾しそうなもの
-言語仕様をDやC++より軽く(>>100)

ああ、それとC言語+クラスだけでいいならObjective-Cで十分な気ガス。
あと、これらを実装するならg++かgdcをベースに要らない機能を削ってってそれを基にした方が良いと思う。

112:デフォルトの名無しさん
07/07/28 21:17:35
> -変数名・関数名で日本語が使えるように(>>37)
これ今の仕様でもできるっしょ。

113:デフォルトの名無しさん
07/07/28 21:28:12
>>112
Cで出来たっけ?C99ではできるのか?

114:デフォルトの名無しさん
07/07/28 21:28:59
日本語見ると、どうしても文字列リテラル内と勘違いするんだよな……

115:デフォルトの名無しさん
07/07/28 21:32:37
自分C#もやってるけど日本語識別子は使ったこと無いな

116:デフォルトの名無しさん
07/07/28 21:58:19
VBAでたまに使う>日本語
使う理由は英語スキルが低いので名前考えるのが面倒ってだけ。

117:デフォルトの名無しさん
07/07/28 23:03:47
>>113
少なくとも処理系依存の範疇で可能なはず。
つまり、やれるようにしたところで規格違反にはならないということ。

それよりも個人的には全角空白を空白類文字として使用可能にしてほしい。
(もっと一般にUnicodeの空白系の文字全般を対象にすればいい)
掲示板で全角空白使ったコードをそのままコンパイルできないのは不便。

118:デフォルトの名無しさん
07/07/28 23:36:45
URLリンク(seclan.dll.jp)

119:名無しさん@そうだ選挙に行こう
07/07/29 01:23:18
XML 2.0 で要素名にいろんな言語が利用できるようになったけど、これって互換性の維持や
他か国語の環境での可読性とかで酷評されてたと思う。

やっぱり日本語変数とかは勘弁して欲しいと思う。

日本国内の環境でも
enum SMAP {中居, ...};
とかで「草薙」が表示できるかできないかとかで悩まなければならないのはまずいと思うし。


120:名無しさん@そうだ選挙に行こう
07/07/29 02:14:11
>>111
>ああ、それとC言語+クラスだけでいいならObjective-Cで十分な気ガス。

残念ながら ObjC は動的型付けなので、十分とは言えない人間も居るのです。

121:名無しさん@そうだ選挙に行こう
07/07/29 06:08:46
>-前方参照(>>110)

これってどういうの?


122:名無しさん@そうだ選挙に行こう
07/07/29 11:38:52
とりあえず、クラスだけ追加してみては。

その際に、C++よりjavaを基にしてほしい。
多重継承なし。とか、
C++のクラス定義はきもい。スコープ演算子::とか?

123:名無しさん@そうだ選挙に行こう
07/07/29 12:10:39
C++の設計と進化 (D&E)によれば、最初は::ではなく . を使っていたんだが、
class X X;のようにクラス名と同名の変数が作られたときに曖昧さが起こるから、
これを回避するために::を導入したとある (§3.11.3)。

124:110じゃないけど
07/07/29 18:02:20
>>121
後ろで宣言したものでも使える。後方参照とも言う。
Dの例(前方参照あり):
void foo(){
  bar();
}
void bar(){
}

Cの例(前方参照無し):
void bar(void);
void foo(void){
  bar();
}
void bar(void){
}

125:名無しさん@そうだ選挙に行こう
07/07/29 18:34:48
>>121 じゃないけど、後方参照は知ってるが、後方参照の事を前方参照と呼ぶ人もいたのか
どっちが一般的なんだろ

126:名無しさん@そうだ選挙に行こう
07/07/29 18:54:23
「前”から”参照」 か 「前”を”参照」 かのどっちかなんだから、あまり気にしないほうが良いと思う。

127:名無しさん@そうだ選挙に行こう
07/07/29 18:58:49
forward referenceとback referenceが区別できないのは困ると思うけど。

128:名無しさん@そうだ選挙に行こう
07/07/29 19:17:20
前方参照 後方参照
前方宣言 後方宣言

129:デフォルトの名無しさん
07/07/29 21:11:10
>>124
「後ろで宣言した」と言うのが間違い。

コンパイラは「ソースを読み進めて行く」んだから、
ソースの下のほうが「前方」だよ。

勘違いしている人が多いので、後方参照とか書いてあるバカ本があったりする。

130:デフォルトの名無しさん
07/07/29 21:58:02
なるほろ
視点はあくまでコンパイラ…と

131:デフォルトの名無しさん
07/07/30 00:29:29
へー、そういう解釈の一派もあるんだ…

132:デフォルトの名無しさん
07/07/30 21:29:18
先読みって言い方はするね

133:デフォルトの名無しさん
07/07/30 22:13:52
>>131 バカ本著者乙 (w

134:デフォルトの名無しさん
07/07/31 00:32:44
>>133
誤爆?

135:デフォルトの名無しさん
07/07/31 01:22:21
まともに(?)煽っていて誤爆に見えないが。

136:デフォルトの名無しさん
07/07/31 01:42:48
まともには見えないが。

137:デフォルトの名無しさん
07/07/31 07:11:23
それはあなたが無知だからです。

138:デフォルトの名無しさん
07/07/31 11:44:19
>>133 を読むのに知識が必要とは思えないが。

139:デフォルトの名無しさん
07/07/31 12:40:00
>>135を読み取る知識が無かったということです。

140:デフォルトの名無しさん
07/07/31 12:51:57
>>135 が言っているのはこういう事でしょ。

1. >>133 は煽っている
2. >>133 の煽りは煽りとしては特に不可解な所は無い
3. よって >>133 は誤爆ではない

俺は >>133 は煽りとして不可解だと感じたから、誤爆だろうと思った。
あまり知性も感じられない書き込みだし、よく誤爆する人間なんだろうと。

141:デフォルトの名無しさん
07/07/31 14:16:52
知力のない人間が知性のない人間に突っ込んだわけだ

142:デフォルトの名無しさん
07/07/31 14:43:20
単に136が135の「まとも」の使い方を誤読しただけ

143:デフォルトの名無しさん
07/07/31 20:38:33
>>142
>>140>>135 の意図した事と異なるのであれば、
>>135 がまともな日本語でないのが原因だよ。
まともに相手してあげた俺がバカだったみたいだね。

144:デフォルトの名無しさん
07/07/31 21:31:49
なぜか140の話を始める阿呆がいる

145:デフォルトの名無しさん
07/07/31 21:36:34
いちいち阿呆とか馬鹿とか付けないと文章書けない人か

146:デフォルトの名無しさん
07/07/31 22:05:24
C言語はハードに近い部分を記述することができますが
最近の言語では、それは無くなってきていますね。
良いことか分かりませんが。

147:デフォルトの名無しさん
07/07/31 22:20:59
>>131=>>134=>>136=>>138=>>140=>>143=>>145 自演乙

148:デフォルトの名無しさん
07/07/31 22:23:57
>>146
> 最近の言語では、それは無くなってきていますね。

FORTRAN の時代からハードに近い部分は高級言語では書けなかったけど?

149:デフォルトの名無しさん
07/07/31 22:26:56
>>147
自演つーか、明らかに全部俺だけど…
もしかして今まで気付いてなかったのか?
大丈夫?

150:デフォルトの名無しさん
07/07/31 22:44:19
>>146
148という訳で、むしろCのほうが異例とさえ言える。

151:デフォルトの名無しさん
07/07/31 22:49:24
>>147は自分が正しいと思ったら絶対曲げないタイプでしょ?


152:デフォルトの名無しさん
07/07/31 23:37:04
OS が書ける言語ならハードに近い部分も書けるんじゃないのかな。
Pascal, Oberon, Lisp, Smalltalk, C++, etc...

153:デフォルトの名無しさん
07/07/31 23:53:30
c言語+gcc拡張で書き直されたosのsetup codeの例
URLリンク(kerneltrap.org)
URLリンク(lkml.org)

それでもまだアセンブラ(*.S)な部分があるのがなんだかなぁだが。

154:デフォルトの名無しさん
07/08/01 00:06:47
個人的には、コンパイラに強く依存するくらいならアセンブラで書いた方が良いな

155:デフォルトの名無しさん
07/08/01 00:09:57
アセンブラはCPUに強く依存しないか?

156:デフォルトの名無しさん
07/08/01 00:19:19
それがアセンブラで書くべき局面なら躊躇無くアセンブラで書くよ

157:デフォルトの名無しさん
07/08/01 00:42:40
移植性がなくても、可読性や保守性の点で高級言語を使う利点もあるでしょ。

158:デフォルトの名無しさん
07/08/01 07:06:38
コンサバじゃないGC

159:デフォルトの名無しさん
07/08/01 21:49:59
>>151
間違ってると言うなら、ソースつきで反論どうぞ。
バカ本はダメだよ。(w

>>152
Pascal と Lisp には標準ではハードを直接触る機能はないと思ったけど。

Oberon, Smalltalk は使ってことないからよくわからんが。

160:デフォルトの名無しさん
07/08/01 23:22:13
頭固い奴だな
OSのアセンブラコードを吐くプログラム書けばいいじゃん

161:デフォルトの名無しさん
07/08/01 23:27:30
それを実行時にやるというなら、生成したコードを実行するために、
任意のアドレスへジャンプもしくは関数呼出などができる機能を
持っている必要があるという制約が生じるね。

162:デフォルトの名無しさん
07/08/01 23:35:31
頭固い奴だな
実行ファイル吐く(略

163:デフォルトの名無しさん
07/08/01 23:42:03
ようするにブートストラップという概念を知らんのね。

164:デフォルトの名無しさん
07/08/01 23:48:23
Lisp も弄った事無いで話してそうだな

165:デフォルトの名無しさん
07/08/01 23:49:53
>>163
ブートキャンプしか知りません。

166:デフォルトの名無しさん
07/08/02 15:00:59
>>159
本云々じゃなくて、お前の人間性な

167:デフォルトの名無しさん
07/08/04 00:49:02
>>160
OSのアセンブラコードってなんだ?

自分用語は、ご自身のブログだけにしといてくれ。

>>166
反論できないから、人格攻撃か。

わかりやすい奴だな。(w

168:デフォルトの名無しさん
07/08/04 01:00:32
>>147に対する「ソース付きの反論」って
どんなのを想定してたんだろう、この子。

169:デフォルトの名無しさん
07/08/04 01:43:29
恐らく本人も良く分かってないのではないかな
脊髄反射で何となく汚い言葉を並べているだけでしょう
だいぶ前から会話が成立していない様ですし

170:デフォルトの名無しさん
07/08/04 06:58:50
>>167
じゃあさ、お前1冊でも本書いてみろよ
俺様が添削してやるから

171:pp
07/08/04 22:15:25
>>168-169
反論できないから、人格攻撃か。

わかりやすい奴だな。(w

# 夜中まで乙。

>>170
指摘されたぐらいでそんなに熱くなるな。

172:デフォルトの名無しさん
07/08/04 22:25:25
以上、言い負けてから先が威勢の良い典型的な厨房でした。

173:デフォルトの名無しさん
07/08/04 22:32:12
簡単な技術の話も出来ないなら他所へ行ったら良いのにな。

それはさておき、C に機能を追加する話題ばかりだったけど、
C から取り除いた方が良いと思われる機能は無いのかな。

174:デフォルトの名無しさん
07/08/05 10:43:00
>>172-173
> 典型的な厨房でした。

反論できないから、人格攻撃か。
わかりやすい奴だな。

> 簡単な技術の話も出来ないなら他所へ行ったら良いのにな。

で、おまえ等 (一人かも知れんが) のレスのどこに技術の話があるんだ?

反論したければ、単に >>129 の解釈に対する反例をあげれば済む話なのに
できないからうだうだ言ってるんだろ?

175:デフォルトの名無しさん
07/08/05 11:17:42
そんな下らない事で息巻いてたのか…

176:デフォルトの名無しさん
07/08/05 11:26:58
>>174
>で、おまえ等 (一人かも知れんが) のレスのどこに技術の話があるんだ?

俺じゃなくてさ、>>159 の書いてる事が素人っぽかったからね。
「Oberon, Smalltalk は使ってことない」らしいけど、Pascal と Lisp も
殆ど知らないんだろうなと思って。

177:デフォルトの名無しさん
07/08/05 12:26:28
>>175
へ~、君はもっと凄いことについてレスしてるつもりだったんだ。
詳しく説明してくれるかな?

>>176
> Pascal と Lisp も殆ど知らないんだろうなと思って。

そう思うなら、どこか素人っぽいか指摘すればいいだけ。

指摘もできないから、「知らないんだろうな」とか言う技術的じゃ
ないことしか書けないんだろ?

# まさか、「OSのアセンブラコードを吐く」なんて言うわけわかめ
# のことを言ってた奴が絡んでるのかなぁ...。(w

178:デフォルトの名無しさん
07/08/05 12:54:10
この人、リアルでは孤独なんだろうな。。


179:デフォルトの名無しさん
07/08/05 12:57:02
おやまあ

180:デフォルトの名無しさん
07/08/05 12:59:30
シャープマンはそろそろおとなしくしてね

181:デフォルトの名無しさん
07/08/05 13:02:52
"ハードに近い"の定義がされてないのに何この荒れよう。
人によってリアルモードのことだったり割り込みのことだったりしそう。
#リンカスクリプトを言語に統合まだー?

182:デフォルトの名無しさん
07/08/05 13:08:05
自分でやれよwwwwwwwww

183:160
07/08/05 13:15:35
>>177
「OSの」は余計って事か。ごめんね。
書いたときは>>152以前は読んでなかったから、OSでも書くつもりなのかと思ってたよ。
>>161には話通じてるみたいだし、スルーされたと思って放置してた。
どのみちファイルに出力できる言語なら何でもできるだろ、
って事を>>148みたいな人へ言いたかったんだけど。

184:デフォルトの名無しさん
07/08/05 13:24:18
ホントにどんな事にでも噛み付いてくる奴は居るもんだな

185:デフォルトの名無しさん
07/08/05 13:41:40
夏だからな

186:デフォルトの名無しさん
07/08/05 13:50:23
>>178-180, >>184-185
「技術的に指摘して」って言ったらこの様ですか...。

まあ、>>185 が言う通り 夏 なんだろうな。

>>181
> "ハードに近い"の定義がされてないのに何この荒れよう。

まあ、最低限として任意のメモリの読み書きができないとダメだろうな。

て言うか、リアルモードとか割り込みなんて事まで言い出すと特定プロセサ
シリーズ専用の言語になるから「標準」でと言うのはないだろうな。

>>183
単に茶化しただけだ、気にしないくれ。

そもそも、>>160 の書き込み自体洒落 (=原理的には可能だけど、実施が
大変面倒なので実際的じゃないという意味) だろ?

て言うか、このスレ自体がネタスレだし...。

> どのみちファイルに出力できる言語なら何でもできるだろ、

>>161 が指摘してる通りそのファイルを実行する手段が必要。
標準の言語仕様としてその機能を持ってる言語ってそんなに多くないよ。

187:デフォルトの名無しさん
07/08/05 14:00:54
>>186
餌欲しい?

188:デフォルトの名無しさん
07/08/05 14:09:42
>>186
各arch毎に言語拡張すれば良くね?

189:デフォルトの名無しさん
07/08/05 14:37:07
>>186
言語仕様に含まれてなくとも、大抵は処理系毎にFFIとかが整備されてるもんだよ。
C言語にしてもasmは標準ではないし、C言語で適当なバイト列を関数アドレスとして
キャストして実行できたりするのも処理系が「たまたま」許してるだけ。
そんな所を君がごちゃ混ぜに語っているのが、分かってないのでは
と言われる理由かと。

190:デフォルトの名無しさん
07/08/05 15:05:34
>186
>そもそも、>>160 の書き込み自体洒落 (=原理的には可能だけど、実施が
>大変面倒なので実際的じゃないという意味) だろ?

大変面倒というのは君の主観でしかないよね。
そういうのは一度作ってしまえばその環境で使いまわせるし、
やることも極めて単純な変換作業だよ。
エミュレータやコンパイラ作ったりする人なら普通に思いつく発想。
で、

>て言うか、このスレ自体がネタスレだし...。

このスレは仮にも「新C言語を作ろう」なんだから、その程度を、
大変面倒と言ってしまうレベルの人間の横槍は遠慮してもらいたい。

191:デフォルトの名無しさん
07/08/05 15:10:02
>>173
ないわけではないよ>>48-61。


>>188
似たようなこととして、DがCPU毎にインラインアセンブリを定めていたはず。

192:デフォルトの名無しさん
07/08/05 15:16:30
>>191
D言語のインラインアセンブラはx86しか(ry
gdcは他のarchの為にasm(gasの文字列);に対応してるけど。

193:>>187 かわいそう...
07/08/05 15:51:36
>>188
そう、実用的には処理系毎の定義と、何らかの言語拡張がなされているのが普通。

特に、ハード周りとかファイル関連はアーキテクチャやシステム毎の差異が大きいので
標準の言語仕様では定義してない方が多い。

C言語は、PDP + Unix と言うある意味特定環境用の言語として作られたから生い立ちと
して他の言語に比べてそこら辺の定義が比較的されていたんだ。

>>189 の言うキャストなんかも、アーキテクチャが決まっていたから許されていたが、
8086 + DOS みたいにメモリモデルによっては関数へのポインタとデータへのポインタで
ビット幅が違うなんて言う変態的なアーキテクチャだと破綻するので言語仕様からはず
されただけ。

>>189
そういう突込みを避けるために、わざわざ゛>>159 に「標準では」って
言う言葉を入れてあるんだが。

> そんな所を君がごちゃ混ぜに語っている

具体的に指摘よろしく。

>>190
まあ、ちょっと落ち着け。

そういう仕組みを作るのが面倒じゃなくて、単に「ハードに触る」だけで、ファイル作っ
てそれを実行して (必要に応じて結果を) 得るって言うことが面倒だ言ってるんだけど、
理解できてる?

194:デフォルトの名無しさん
07/08/05 15:55:05
もっと毒吐けよwwww

195:デフォルトの名無しさん
07/08/05 16:19:14
>>193
処理系毎じゃなくてarch毎に拡張の標準を決めるべきでね?

196:デフォルトの名無しさん
07/08/05 17:22:27
>>193
>理解できてる?
何を言ってるのかさっぱりわかりませんがその前に、
「君の主観でしかないよね」って言葉は理解してるのかな?
ともかく、何が面倒なのかを焦点に議論するのは無駄でしょう。
重要なのはどういった手法であれ、目的が達成できるかどうか。
よりベターな方法なんて後からいくらでも考えればいい。

>具体的に指摘よろしく。
自覚がないなら遠慮しておきます。
それこそ「面倒」なんで。

197:デフォルトの名無しさん
07/08/05 17:24:43
ANSI Common Lispという本の導入、クロージャを紹介する所でこんなのがある。

(defun addn (n) #'(lambda (x) (+ x n)))

「Cではaddnはどうなるだろう?ちょっとすぐには書けないだろう。
もっとも読者はこんなふうに思うかもしれない。大体こんなことをしたいなどと考え
たりするだろうか、と。しかし、そう考えたりしないのは、プログラミング言語が、それで
できないようなことは、やりたいと思わないように利用者を仕向けているからである。
プログラムを書く言語で考えなければならないのだから、それで書けないことをやり
たいとは考えにくい。私が初めてプログラムを書き始めたころ、それはBasicで書いて
いたのだが、再帰を使いたいなどとは考えなかった。そんなものがあることも知らな
かったのだ。私はBasicで考えていたのだ。
(中略)
(Lispを学習していく)努力の報酬として、上級のC++プログラマがBasicでの
プログラミングに感じるようなやりにくさを、C++に対して感じるようになるだろう。」


198:デフォルトの名無しさん
07/08/05 18:11:01
>>195
例えば、86系用だと io 命令を拡張の標準にするとか?

ちょっとおもしろいかもしれない。

>>196
> 何を言ってるのかさっぱりわかりませんが

ああ、理解できてないなら別にもういいよ。

別に君の意見に反対する気はないし、そういう人に何を言っても無駄だ
と言うことも知ってるから。

> 自覚がないなら遠慮しておきます。
> それこそ「面倒」なんで。

# 指摘できない言い訳を2行も書くのは面倒じゃないんだ...。(w

199:デフォルトの名無しさん
07/08/05 18:13:34
「俺はまともなんだが、どうにも馬鹿が多くて話が進まないなぁ」
と思ってるそこのキミ。それはつまりキミが馬鹿なんです。

200:デフォルトの名無しさん
07/08/05 18:17:02
>>198
> > 自覚がないなら遠慮しておきます。
> > それこそ「面倒」なんで。
> # 指摘できない言い訳を2行も書くのは面倒じゃないんだ...。(w
>>196のこの部分は、
「ああ、理解できてないなら別にもういいよ。
別に君の意見に反対する気はないし、そういう人に何を言っても無駄だ
と言うことも知ってるから。」
という意味のことを、それよりは少し短く言ってるだけだと思うよ。

201:デフォルトの名無しさん
07/08/05 18:17:51
その典型的な例がシャープ

202:デフォルトの名無しさん
07/08/05 18:28:03
できない言い訳に、他人の無能さを持ち出す人って饒舌だからね

203:デフォルトの名無しさん
07/08/05 19:21:10
>>200
はいはい、言い訳はもう結構です。

204:デフォルトの名無しさん
07/08/05 20:37:33
何を話してるのかはさっぱりわからんが、誰が痛いかはよくわかる。

205:デフォルトの名無しさん
07/08/05 20:48:27
>>204
だな。主観で話してるお前が一番痛い。

206:デフォルトの名無しさん
07/08/05 20:57:42
いや、そいつは二番目だ。
一番は俺だからな。

207:デフォルトの名無しさん
07/08/05 21:10:31
いやいや俺だ

208:デフォルトの名無しさん
07/08/19 18:24:44
>>207
そうだな

209:デフォルトの名無しさん
07/08/19 19:23:20
ここは誰が一番痛いか競うスレですかそうですか。

210:デフォルトの名無しさん
07/08/19 19:32:53
そうだよ
君もエントリーするかい

211:209
07/08/19 19:43:53
よろしくお願いします。
一応下記の至らぬスレの主です。

おら!Nをオトメに見つけて++Nを得るムを作らん?!
スレリンク(tech板)l50

212:デフォルトの名無しさん
07/08/19 20:05:21
ワロタw

213:デフォルトの名無しさん
07/08/19 20:10:54
>>211
糞スレ立てるな

214:209
07/08/19 20:21:58
>>212-213
何も成果物を作れないかもしれませんが、
気長に見てやってください。

スレ違い及び売名行為失礼しました。
逝ってきます。

215:デフォルトの名無しさん
07/08/20 18:32:13
酷いスレだな

216:デフォルトの名無しさん
07/08/25 12:46:57
・変数スコープをなくし、全てグローバルとする。
スコープとはいわば開発者に脳内スタックの確保を一段
強要する機能であり、開発の邪魔である。
変数は全て設計者が関数一覧表とそれに付随する変数一覧表にて管理する。
ローカルだからと適当に変数を作り捨てるようなことをするから
ゴミ変数が増え、バグとなる。

・ポインタの廃止。ポインタは労多くして功少なしの典型機能。
・キーワードを全て大文字化する。小文字は小さく目に悪い。

217:デフォルトの名無しさん
07/08/25 12:48:11
全部ボツ

218:デフォルトの名無しさん
07/08/25 15:13:41
>>216
COBOL でも弄ってろ無能。

219:デフォルトの名無しさん
07/08/26 17:08:28
>>216
要約するとガベージコレクションを付けろってことだな

220:デフォルトの名無しさん
07/08/27 02:45:42
>>216
異論の余地がないほど同意
cなんかよりBASICのほうが1億光年優れてるよな

221:デフォルトの名無しさん
07/08/27 18:09:12
>>220
>異論の余地がないほど同意
本人だからか?

222:デフォルトの名無しさん
07/09/06 17:28:11
小学校でローマ字を習うまでは大文字しか読めなかったから
BASICはできてもCはできなかった

223:デフォルトの名無しさん
07/09/06 17:39:30
自分は小学校でローマ字を習う以前に公文で英語やってたから小文字も読めた
でもプログラミングはやってなかった
つかPC自体が珍しい時代だった

224:デフォルトの名無しさん
07/09/20 10:00:55
C言語にGCとデリゲートとコルーチンっていうか、ファイバーっていうんだっけ?中断できるやつ。があれば割とすごいことになりそうな感じ。
あ、あとエクスポート可能なテンプレートかジェネリックスもね。

はっきり言ってクラスはなくても何とかなる。thisコールが結構べんりっちゃーべんりだけど。

225:デフォルトの名無しさん
07/09/20 10:25:33
>>216
ローカル変数は無いと再帰処理が出来なくて悲惨だぞ。その再帰も深くなるとばぐっちゃうけどね。
ポインタはローレベル叩くとき必要だけど、普段はあんまり恩恵ないな。イテレータにしても実用上は問題ないかもね。
キーワードは、色つきエディタ使えば解決。え!?もってないの???VCが無料だって言うのに。

226:デフォルトの名無しさん
07/09/20 11:41:51
>>216
int i; とかをグローバルにする知り合いがいたんだが、

void g(void) {
  for (i = 0; i < Y; i++) 何かする;
}

void f(void) {
  for (i = 0; i < X; i++) g();
}

みたいなことやってバグってハマってたな

227:デフォルトの名無しさん
07/09/20 13:09:15
>>216
異論の余地がないほど同意
cなんかよりBASICのほうが1億光年優れてるよな


228:デフォルトの名無しさん
07/09/20 13:22:00
同意するなら異論に反論してからにすれば

229:デフォルトの名無しさん
07/09/20 14:06:23
B    A    S     I      C

230:デフォルトの名無しさん
07/09/20 15:20:03
俺の専ブラが>>216をグロ判定したんだけど

231:デフォルトの名無しさん
07/09/20 22:53:59
暇があったら俺のじゃんけんプログラム倒してくれ。

*N88互換BASICを使っている人・・・・
スレリンク(tech板)l50 の 24 参照

232:デフォルトの名無しさん
07/09/21 18:11:30
タートルグラフィックを準標準に入れてくれないかねぇ。
任意で実装って感じでさ。
あれこそ、コンピュータグラフィックスだよ。

233:デフォルトの名無しさん
07/09/23 21:37:44
ただのタートルグラフィックじゃだめだな。
3次元に拡張して、タートルがグリグリ動く奴でヨロ。

234:デフォルトの名無しさん
07/12/24 02:30:36
よし、ゲーム向け言語


  #include<game.h>
  
  int main()
  {
    CreateGame(CG_SHOOTING)
    return 0;
  }


これでシューティングゲームができる言語を作ってみそ

235:デフォルトの名無しさん
08/01/27 17:24:03
無理だろうけど
#iconfile iconfilename
と書くと作成される実行ファイルにiconfilenameで指定したアイコンファイルが関連付けられる機能

236:デフォルトの名無しさん
08/01/28 18:42:16
break+数字で複数のループを抜ける。

while(1) { /* ループ1 */
   while(1) { /* ループ2 */
     break2;
   }
}

237:デフォルトの名無しさん
08/01/28 18:45:05
gotoでいいじゃん。


238:デフォルトの名無しさん
08/01/28 19:09:53
>>236
UWSCで使えるけど便利だよね。

あと、forループで規定回数で抜けるのと途中で抜けるのとをスイッチするオプションがあれば・・・
あ、普通にフラグとスイッチ使えばいっか。


239:デフォルトの名無しさん
08/01/28 21:36:08
>>236
数字はやだ、ラベルにしてくれ。

Loop:
 while(1) { /* ループ1 */
  while(1) { /* ループ2 */
   break Loop;
  }
 }

240:デフォルトの名無しさん
08/01/28 21:37:48
それ gotoって言うんだよ

241:デフォルトの名無しさん
08/01/28 22:57:11
そんなこと言い出したから、while だって、if + goto なわけだが。

242:デフォルトの名無しさん
08/01/29 17:27:37
>>239
まんまD言語な件。いや、Javaでもあったかな。

243:デフォルトの名無しさん
08/02/17 19:38:46
int main(int argc, char *argv[]) {
    switch(VersionComparison(argv[1], argv[2])) {
        case 1:
            printf("%sの方がバージョンが新しいです。\n", argv[1]);
            break;
        case 2:
            printf("%sの方がバージョンが新しいです。\n", argv[2]);
            break;
        default:
            printf("%s, %sのいずれもバージョン情報を含んでおりません。\n", argv[1], argv[2]);
            break;
    }
    return 0;
}

244:デフォルトの名無しさん
08/04/09 20:32:13
あげもかねてC言語ネタ投稿 実際にはコンパイルできないソースファイル

#include "Windows.h"
extern "C" __declspec (dllexport) int isosmode(void);
int _tmain() {
  switch(isosmode()) {
    csae 0:
      MessageBox(NULL, "現在のモードは、アドバンスモードです。", "モード判定", MB_ICONINFORMATION);
      break;
    case 1:
      MessageBox(NULL, "現在のモードは、セーフモードです。", "モード判定", MB_ICONINFORMATION);
      break;
    case 2:
      MessageBox(NULL, "現在のモードは、デバックモードです。", "モード判定", MB_ICONINFORMATION);
      break;
    default:
      MessageBox(NULL, "CHKMODE.DLLは存在しません。", "ファイルの欠落によるエラー", MB_STOP);
      break;
  }
  MessageBox(NULL, "なんちゃって、isosmode()もCHKMODE.DLLも実際には存在しません。", "注意", MB_ICONINFORMATION);
  return 0;
}

245:デフォルトの名無しさん
08/04/09 20:36:34
printf("私は弱者を愛し、守っていきます。");

紳士言語

246:デフォルトの名無しさん
08/04/09 21:05:21
>>245
ここではスレ違いの内容だよ
そういう書き込みは“適当に作ったC言語の関数を貼っていくスレ”の方で。

247:デフォルトの名無しさん
08/06/19 18:33:34
>>225
関数の引数を増やしてそれをローカル変数代りにすればOK。
216が関数の引数もなくせ、と言っているなら知らんが...。

248:デフォルトの名無しさん
08/06/19 21:27:03
>>241
if + goto + goto だと思うが。

249:デフォルトの名無しさん
08/06/19 21:52:07
>>248
大抵のコンパイラは

 goto L1
L2:
 ...
 if(...) goto L2

に展開するから、goto + if + goto が正しいな。

って言うか、5ヵ月近く前のレスにレスするほどの内容か?

250:>>249
08/06/19 21:53:13
ラベル付け忘れた... orz

 goto L1
L2:
 ...
L1:
 if(...) goto L2

251:デフォルトの名無しさん
08/06/20 22:40:22
>>249
どうしてもレスつけたかったんです、勘弁してください。

252:デフォルトの名無しさん
08/07/24 01:36:50
>>1
やる気があるなら、予約語を全部排除して、
全部自前で定義できるようにしてくれ。
そういう仕様なら乗ってやる。


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