とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

C/C++言語

引数の省略と...(省略記号区切り子) (4)

まず,適当な実引数をそれぞれに渡してみましょう。何か問題があるでしょうか? #include<stdio.h> void NonParameterFunc(){puts("NonParameterFunc");} void EllipsisPunctuatorUsedFunc(int dummy,...){puts("EllipsisPunctuatorUsedFunc");} int main(void){ NonP</stdio.h>…

引数の省略と...(省略記号区切り子) (3)

昨日の記事は,真面目に書いたネタです。起→承→転→結でいうなら,起→(転結)です。始まってすぐに落とすあたりが,頭の悪さを醸し出しています。 ところで,あれで終わっちゃうのはもったいないですよね?私はもったいないと思うわけですよ。他人がどう思おう…

引数の省略と...(省略記号区切り子) (2)

結論から言う。 ぶっちゃけこの2つを比較すること自体間違っている。この2つは全く違うものであり,第一同等であるかのような(問題提起するための)コードを書くことすらできない。 引数を省略した関数を書くのは誰にでもできるだろう。void NonParameterFunc…

引数の省略と...(省略記号区切り子) (1)

→fkm−大学中退したヘタレプログラマー脱却への日記 - CとC++(2) またまたfkmさんのところより。 関数の宣言において,引数を省略したときと...(省略記号区切り子)を用いたときとでは挙動は同じだろうか?それとも違うだろうか?

飛躍

→fkm−大学中退したヘタレプログラマー脱却への日記 - CとC++ なんか(誰も聞いてない)飛躍した事書いてる。ダメだなこれは。そんな事してないで,掲示板に返信しろよ。orz.

Short Code

昨日の9Bmain=195;ローカルならともかく,人様のサーバ使って何やってんだって感じです。

開発中...

継承したクラスから,親の関数を呼べない内部構造/設計だったのですが,アイディアが閃いたので,クラス Object に対するテストを殴り書きして,改善中。もうちょっとがんばれば公開できるレベルになるかも。時間ねぇ! todo: 親の関数を呼べるようにする イ…

続・setjmp/longjmp

「setjmp() の戻り値処理の if文からも、抜けてはならない。」の反証コード。*1 環境は OS Windows XP Professional, cmd.exe。コンパイラは VC6(cl.exe) と Cygwin gcc 3.4.4(gcc.exe)。 C:\tmp>dir ドライブ C のボリューム ラベルは system です ボリュー…

「setjmp() の戻り値処理の if文からも、抜けてはならない。」は本当か?

なんと,杉浦さんがコメントしてくださったので,ここで議論してみたいと思います。杉浦さんに感謝。 杉浦さんへ。 補足して頂いた点は拝見しました。setjmp/longjmpをよりハードよりな面から見て説明しようとしていることは理解できましたし,分かりやすい…

言い訳

void longjump( jmp_buf jmp, int ret ); その後、何かの処理を呼び出す。この時、setjmp() を呼び出した関数から抜けても、あるいは setjmp() の戻り値処理の if文からも、抜けてはならない。そして、この setjmp が保存したコンテキストバッファが有効であ…

初期化子は定数

CとC++の些細かつ重大な違い。 int main(void){ int a=init(); static int b=init(); }C++は問題ないがプログラム言語Cでは3行目でエラーになる。静的なオブジェクトを初期化するとき,初期化子は定数でなければならない。 これは重大だ。CotNet の実装にお…

急遽 setjmp

ひげぽんさんにうそを教えてしまった。なんてこったい。 o.. rz →ひげぽん OSとか作っちゃうかMona- - setjmp/longjmp検証 - サンプルコード 7.13.1.1 setjmpマクロ (snip) 環境限界 setjmpマクロの呼び出しは,次に示すいずれかの文脈にしか現れてはならな…

小咄 関数原型と定義

私は↑のエントリで「『「必要なら』(privateな)関数原型を書きます。」と書きました。その理由分かりますか? ってのは,定義を書いてしまえば,以下,宣言したのと同じになるからです。おきまりのように,ファイルの先頭で関数原型をすべて書く人がいますが…

小咄 typedef

やたら多用されがちな typedef。みなさんはどの程度用いていますか?隠れた問題に気づいていますか? ほとんどの有名ライブラリは,何かの呪文のようにズラーッと typedef を並べたヘッダの1つや2つを持っています。しかし,今のところCotNetライブラリでは…

ジェネリックを改善する (4)

では,QueueT.hをチョイと修正して,Queue_intの宣言用のファイル(Queue_int.h)と実装用のファイル(Queue_int.c)を用意しましょう。 // QueueT.h // System.Collections.Generic.Queue #include<stdlib.h> #define SIZE 16#define DECLARE_Queue(T) \ typedef struct Q</stdlib.h>…

クイズ

次のコードをコンパイル・実行する過程で何が起きるか10秒以内に答えなさい。 #include<stdio.h> int a; extern int a; int main(void){ printf("%d\n",a); { static int a=1; printf("%d\n",a); { extern int a; printf("%d\n",a); } } } extern int a; int a=2;</stdio.h>

クイズの解答と評価

ずっと下 解答 );}int main(void){(*************puts)( 評価 1分以上:論外 10秒以上:奇人 10秒未満:変人 ごめん。 こんなのに,まじめに取り組む時点で「のーまる」じゃないよ。作る側も,解く側も。 もし,解説が必要な方はコメント欄へどうぞ。たぶん…

Microsoft Visual C++ 6.0のバグ

VC6のエディタに次のように入力する。 {} { 二行目の先頭へカーソルを移すとスペースキーが利かない!*1 *1:ように見える

クイズ

次のC99のコードを実行した結果を10秒未満のうちに答えよ。 #include<stdio.h> int main(void){(*************puts)(");}int main(void){(*************puts)(");}</stdio.h>

JudgeOnline 1519 -- Digital Roots

実はacceptされていなかったpku1519. gccを使ってrank1になってみた。60B. →1519's Status List

Cパズルプログラミング-再帰編(7)

→続々々 Karetta|Cパズルプログラミング-再帰編|四則演算 それなりな電卓完成。 面倒だから,二つまとめちゃいます。 →Karetta|Cパズルプログラミング-再帰編|優先順位を考えた式の処理 →Karetta|Cパズルプログラミング-再帰編|整理 expr5.c expr6.c →Karett…

Cパズルプログラミング-再帰編(6)

→続々 Karetta|Cパズルプログラミング-再帰編|四則演算 電卓ー。 →Karetta|Cパズルプログラミング-再帰編|数式もどき 演算子の優先順位無視バージョンの電卓。初めの数に符号({+|-})をつけるとだめだったり,何より変な入力をすると簡単に落ちてくれる。(^^)…

Cパズルプログラミング-再帰編(5)

→続 Karetta|Cパズルプログラミング-再帰編|四則演算 電卓作るんだよな…。 →Karetta|Cパズルプログラミング-再帰編|トークンがやっと動き出す expr3.c →Karetta|Cパズルプログラミング-再帰編|expr3.c GetTokenが変態的なコードになったがあまり気にしないこ…

Cパズルプログラミング-再帰編(4)

→Karetta|Cパズルプログラミング-再帰編|四則演算 電卓作るぞ。たぶん。 →Karetta|Cパズルプログラミング-再帰編|1行入力の動作確認 expr1.c →Karetta|Cパズルプログラミング-再帰編|expr1.c#include<stdlib.h> #include<stdio.h> int main(void){ char*b=malloc(1024); if(b)f</stdio.h></stdlib.h>…

Cパズルプログラミング-再帰編(3)

→Karetta|Cパズルプログラミング-再帰編|組合せ 続いて組合せ。 comb1.c →Karetta|Cパズルプログラミング-再帰編|comb1.c int comb(int m,int n){return m>n&&n>0?comb(m-1,n-1)+comb(m-1,n):1;} #include<stdio.h> int main(void){ int i,j; for(i=0;i<5;++i)for(j=0</stdio.h>…

Cパズルプログラミング-再帰編(2)

→Karetta|Cパズルプログラミング-再帰編|階乗 超簡単な階乗からスタート。自分なりにコードを書いてみる。 fact1.c →Karetta|Cパズルプログラミング-再帰編|fact1.cint fact(int n){return n>0?n*fact(n-1):1;} #include<stdio.h> int main(void){ int i; for(i=0;i<1</stdio.h>…

Cパズルプログラミング-再帰編(1)

最近ショートコードを書こうと何度か挑戦したのですが,Acceptなコードすら書けない状況で,「こりゃ,脳みそ弱ってるな。」って感じな訳ですよ。 少しずつリハビリをしようってことで,こちらを題材にしてみることにします。 →Karetta|Cパズルプログラミン…

ふざけたダイアログ

Visual C++ 2005 Express Editionで表示される,とあるダイアログ。 ね?「続きを読む」を押した後,不快になったでしょ? ディスプレイの解像度の横で,一般的な1024pixel*1を超すようなダイアログはやばいだろ。つか800pixel*2超した時点でやばいだろ。 非…

C++/CLI国際標準にならず?

via:エピさん →C++/CLI、ISOに蹴られる どうやらC++標準委員会で「承認せず」になったようですね。

プログラム言語CでRTTIもどきに似て非なるもの

→超穴日記 - プログラミング グロ注意。 /* RTTI lib */ #include<stddef.h> #define RTTI(T) typedef struct RTTI_##T{T value;const char*const name;const size_t size;}RTTI_##T #define RTTI_INIT(T) {0,#T,sizeof(T),} #define RTTI_CAST(T) *(T*)& #define RTTI</stddef.h>…