タグ

Cに関するtest_testerのブックマーク (6)

  • Big Sky :: 何もソースコードを変更せずに2038年問題を解決する。

    まず2038年問題というのをご存じでしょうか 2038年問題 - Wikipedia 2038年問題(にせんさんじゅうはちねんもんだい)は、2038年1月19日3時14分7秒(UTC、以下同様)を過ぎると、コンピュータが誤動作する可能性があるとされる年問題。 http://ja.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C C言語で epoch を扱う time_t が32bit OS上でオーバーフローし日時間2038/01/19 12:14:07の次に1901/12/14 05:45:52が来てしまうという問題です。まぁそもそも2038年にもなって32bit OSを使っている側が悪いと言えばアレですが。 実際にどんな事が起きるかは、32bit OS上で以下を実行すれば分かる。 #include <stdio.h> #include

    Big Sky :: 何もソースコードを変更せずに2038年問題を解決する。
  • UNIX/Linuxのパイプ - 滴了庵日録

    20年くらい日々使っていながら、UNIX/Linuxのパイプの振る舞いをよく分かってませんでした。『易経』に「日に用いて知らず」というのはこれです。ちょっと簡単なコードで実験してみました。 リスト1 test1.c #include <stdio.h> int main(void) { int i; for(i=0;i<5;i++){ sleep(1); printf("test1(%d)\n",i); fflush(stdout); // ←これが大事 } return 0; } リスト2 test2.c #include <stdio.h> int main(void) { char buff[1024]; printf("test2 starts.\n"); while(gets(buff)!=NULL){ printf("test2[%s]\n",buff); } return 0

    UNIX/Linuxのパイプ - 滴了庵日録
  • cgoがGoのコンパイル速度に与える影響 - Qiita

    はじめに (タイトルはScala の機能がコンパイル速度に与える影響にインスパイアされました。) Goのコンパイル速度の速さはセールスポイントの一つです。しかし、そんなGocgoを使い始めるとコンパイルが途端に遅くなります。あんまりこのあたりについて言及しているエントリがないので書いてみることにしました。 このエントリではサンプルプログラムがいっぱい出てくるので以下のリポジトリにまとめました。 また、コンパイル速度の比較もmakeで行えるようになっています。

    cgoがGoのコンパイル速度に与える影響 - Qiita
  • もうちょっと息抜きITクイズ 第33回 スポーツの秋!「コンパイラの最適化」クイズ

    スポーツの秋ですね。スポーツをする目的には、記録を伸ばす「もっと速く」や、ダイエットをする「もっと軽く」があるでしょう。これと似たことが、プログラミングにもあるのをご存じですか。それは、コンパイラの最適化です。コンパイル時に最適化を指定すると、ソースコードの無駄な部分が取り除かれて、「より速いプログラム」や「より小さいプログラム」が生成されます。 今回は、コンパイラの最適化に関するクイズを出題します。明らかに無駄があるC言語のソースコードを示しますので、それが、コンパイラによって、どのように最適化されるかを考えてください。問題は、全部で8問あります。どれも、シンプルなプログラムなので、C言語の構文を詳しく知らなくても、内容を理解できると思います。ぜひチャレンジしてください。 【問題1】はじめは「最適化とは何か」を知っていただくためのやさしい問題です 以下は、引数aの2乗を返す関数funcで

    もうちょっと息抜きITクイズ 第33回 スポーツの秋!「コンパイラの最適化」クイズ
  • gcc+gdbによるプログラムのデバッグ 第3回 gdbの便利な機能、デバッグの例

    いくつかのバグを含むツリーソートのプログラムを用意しました。 treesort1.c #include <stdio.h> #include <stdlib.h> struct node { int value; struct node *left; struct node *right; }; void treeadd(struct node**, int); void treewalk(struct node*); void treefree(struct node*); int main(int argc, char **argv) { struct node *rootp; int i; int array[15] = {50, 12, 18, 70, 41, 19, 91, 1, 7, 6, 81, 65, 55, 20, 0}; for (i = 0; i < 15; i++)

  • lsを読まずにプログラマを名乗るな! - ぱたへね

    なかなか挑発的なタイトルのlsを読まずにプログラマを名乗るな!を読みました。タイトルとは違って、lsの実装を丁寧に説明してあって勉強になりました。lsのソースコードを読みながら、システムコール、アルゴリズム、多言語化等の幅広い話題に触れることができます。いくつかCのプログラムを書いていて、次の次のステップに進みたい人にお勧めです。 なぜlsか lsを題材にしている理由について、私なりにまとめ直しました。 デイレクトリの操作などでシステムコールの使い方がわかる 再帰呼び出し、名前順にソート等の定番アルゴリズムが使われている。 多言語化対応 普段よく使うプログラムなので挙動が想像しやすい 限られたリソースで動かす為の技が所々にある。 普通のプログラマならlsやdirは必ず使うことになるので、良い題材を選んだと感じました。 の内容 ls.cから、テーマに沿った部分を抜き出しての説明があります。

    lsを読まずにプログラマを名乗るな! - ぱたへね
  • 1