タグ

関連タグで絞り込む (162)

タグの絞り込みを解除

Cに関するiwwのブックマーク (410)

  • #と##演算子

    文字列化演算子 マクロ関数だけで使用できる、便利な演算子が用意されています そのひとつが文字列化演算子です マクロ関数で受け取った値に対して#記号をつけることで それを文字列、すなわちダブルクォーテーションをつけた状態に置換えます (プリプロセッサディレクティブであることを忘れないでください。あくまでソース上で置き換わるだけです) #define STRING(str) #str このマクロ関数は、仮引数の値をダブルクォーテーションをつけた状態に置き換えます 次のプログラムを実行してください #include <stdio.h> #define PRINT(str) printf(#str "\n") #define STRING(str) #str int main() { PRINT(Kitty on your lap); printf("%sバイトは1キロバイト" , STRING(

    iww
    iww 2021/03/08
    ## なんて知らなかった。 バグの素になりそうだからできるだけ避けて生きよう
  • ソフトウェア1 (2020)

    ソフトウェア1 (2020)¶ サイトは、東京大学工学部電子情報工学科・電気電子工学科の進学内定者(2年生、A1ターム)を主たる対象としたソフトウェア1の講義ページです。C言語の基礎を勉強します。 電気系の学科のslackにて講義に関する通知を行うので、常時学科slackをチェックするようにしてください。 電気系の2年生は最初のオリエンテーションで全員slackに招待されるはずですが、もし招待されていなければ松井まで連絡してください。 3年生は既に全員招待済みのはずです。電気系以外の履修者、および4年生は招待されていないので、松井まで個別に連絡してください。 サイトは2020年度版です。2021年度版はこちら。 ニュース¶ [2020.11.16] Q&Aにweek7を追加しました。 [2020.11.12] week7、およびバージョン管理を追加しました。 [2020.11.09]

  • uncompress error when using zlib

    iww
    iww 2020/05/27
    『zlib format is not gzip format. The zlib uncompress function doesn't understand the gzip format.』 マジかよ 全く同じ過ちを犯してしまった
  • zlib 1.3.1 Manual

  • Data Definitions for libz

  • 2019年10月16日 “脱帽です”―9億3,000万ハッシュ/秒でようやく判明したケン・トンプソンのパスワードは…? | gihyo.jp

    Linux Daily Topics 2019年10月16日“脱帽です”―9億3,000万ハッシュ/秒でようやく判明したケン・トンプソンのパスワードは…? AT&Tのベル研において、かのケン・トンプソン(Ken Tompson)とデニス・リッチー(Dennis Richie)がUNIXの開発を開始したのが1969年、つまり今年2019年は"UNIX50周年"にあたるアニバーサリーイヤーでもある。その記念すべき年に、現代のハッカーたちが偉大な先駆者に挑んだ5年越しのゲームがゴールを迎えた。 RubyのWebサーバインタフェース「Rack」やテストフレームワーク「Bacon」の開発者として知られるLeah Neukirchenは2014年、BSD 3のソースツリーからパスワードファイル(/etc/password)を入手した。そこにはトンプソンやリッチーのほか、GoogleCEOを務めたエリ

    2019年10月16日 “脱帽です”―9億3,000万ハッシュ/秒でようやく判明したケン・トンプソンのパスワードは…? | gihyo.jp
    iww
    iww 2019/10/16
    さすがコンパイラにいたずらする人はセキュリティ意識が段違いだ
  • 江添亮のC++入門

    書はプログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶためのである。書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。C++コンパイラーをC++で書く場合、C++コンパイラーのソースコードをコンパイルする最初のC++コンパイラーをどうするかというブートストラップ問題がある。書はいわばC++における知識のブートストラップを目指しただ。これにより読者はを先頭から読んでいけば、まだ学んでいない概念が突如として無説明のまま使われて混乱することなく読み進むことができるだろう。 C++知識のブートストラップを意識した入門書の執筆はなかなかに難しかった。ある機能Xを教えたいが、そのためには機能Yを知っていなければならず、機能Yを理解するためには機能Zの理解が必要といった具合に、C++の機能の依存関係の解決をしなければならなかったからだ。著者自身も苦し

  • 1分で実行できる?インストール不要、C言語向けGoogleTestサンプル for Linux - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    1分で実行できる?インストール不要、C言語向けGoogleTestサンプル for Linux - Qiita
  • 組込みCテストフレームワークUnityを導入してテストコード生産性をUp - フォトシンス エンジニアブログ

    回路設計・ファーム開発担当のす〜(@ksksue)です。 弊社のBLEモジュールnRF52(Cortex-M4F)のファームウェア開発環境にテストフレームワークUnity導入したところ カンタンな導入でテストコード生産性が飛躍的に上がりました。今回はそのUnityの紹介&解説です。 IoT開発においてハードウェアとソフトウェアを組合せたテストは品質を担保するために大事な工程ですが、 テスト項目が多くなってくると非常に煩雑になりがちです。Unity導入によってその煩雑さが少なくなりました。 オレオレテストコードをいじりまわす日々 Unity導入前、最初はカンタンなオレオレテスト環境で進めていたのですが、テスト項目数が増えるに従ってその環境自体を場当たり的に改善していくといった作業が発生しました。 正直なことを言うと、改善したいという欲求にあがらえず、必要以上の作業をしていた部分があったと思い

    組込みCテストフレームワークUnityを導入してテストコード生産性をUp - フォトシンス エンジニアブログ
  • ゲームじゃないほうの Unity で C 言語でテスト - Qiita

    Unity とは? 「Unity ってゲームのやつかな? でも C言語?」とお思いでしょうが、ここでの Unity はC 言語のためのテストフレームワークのほうです。テストケースを書いて、赤色を緑色にしていくやつですね。 小さくて手軽で書きやすいので、簡単にテストを書いて実行することができます。アサーションも必要なものがそろっています ( のちほどご説明 )。 以下では Unity の導入とテストケースの作成、ビルドと実行についてメモします。 導入 Unity を入手します: https://github.com/ThrowTheSwitch/Unity プロジェクトの lib 等、好きな場所に置きます テストケースを書きます テストランナーを書きます モジュールを空実装します ビルドの設定をします テストを実行して真っ赤にします (なりませんが……) モジュールを修正します 緑にします

    ゲームじゃないほうの Unity で C 言語でテスト - Qiita
  • Man page of REMOVE

    iww
    iww 2019/08/27
    存在意義がわからん。 手抜き用にしても中途半端
  • おそらく先がない5つのプログラミング言語? - YAMDAS現更新履歴

    おそらく先がない5つのプログラミング言語、といういろいろと怒りをかいそうな記事だが、どうせワタシが愛する C 言語なんかがまたやり玉に挙がってるんだろうと見たら、一番最初に Ruby が挙がっている…… この記事は TIOBE や RedMonk のプログラミング言語ランキングに Dice 独自の求人票情報を加味してるようだが、Ruby は落ち目という認識らしい。うーむ。 それ以外には Haskell、Objective-C、R、そして Perl が挙げられていて、この手の記事の定番といえる PerlSwift 誕生後やはり定番である Objective-C はそうですかという感じだが、ビッグデータの時代に人気を高めた R 言語ですら、Python に追いやられつつあるというのはそうなんでしょうね。 それにしても Ruby が先がないという意見には異論が出るだろう。ネタ元は Slashd

    おそらく先がない5つのプログラミング言語? - YAMDAS現更新履歴
    iww
    iww 2019/08/06
    Cは他言語のベースになってるだけあってつぶしが効く言語だと思うし、初期に勉強できてラッキーだった
  • 組込み機器向けのコーディングに「MISRA C」が効果的な理由

    車載製品のソフトウェアの安全性と信頼性を支援するために作られた団体「MISRA(Motor Industry Software Reliability Association)」。同団体は、C言語のためのソフトウェア設計標準規格「MISRA C」を開発したことでも知られている。なぜ組込み機器の開発にMISRA Cを活用するのがよいのか。C言語とはどう違うのか。MISRA C 研究会に所属するビースラッシュの宇野結氏が解説した。 MISRAは、車載製品のソフトウェアの安全性と信頼性を支援するために作られた団体だ。1998年に、C言語のためのソフトウェア設計標準規格「MISRA C」を開発したことでも知られている。MISRA Cはその後も改訂が重ねられ、現時点でMISRA C:2012が最新版となる。 宇野氏が所属するMISRA-C研究会は、「MISRA Cを正しく理解し、実用的な形でまとめ、

    iww
    iww 2019/07/16
    『MISRA Cに従って記述することによって、安全性が高くなるのです』 そういえば、どの程度効果があるのかを定量的に示したものを見たことが無いな
  • Man page of ACCESS

  • ファイルサイズの取得方法 - 苦しんで覚えるC言語

    C言語にはファイルサイズを知るための関数はありません。 ファイルサイズを知るには、ファイルを開いてからファイルポインタを移動して求めます。 fpos_t GetFileSize(const char* FileName[]) { fpos_t fsize = 0; FILE* fp = fopen(FileName, "rb"); /* ファイルサイズを調査 */ fseek(fp, 0, SEEK_END); fgetpos(fp, &fsize); fclose(fp); return fsize; } fpos_t はデータのサイズを意味する変数で、実態は符号なしの整数値です。int に変えてもさほど問題はありません。 また、上記の処理で、ファイルポインタ、つまり現在の読み取り位置が変化してしまうので、下記のようにして戻します。

    ファイルサイズの取得方法 - 苦しんで覚えるC言語
    iww
    iww 2019/07/04
    fseek()で求めるとか、こういうことをしているから苦しむのでは
  • 日本のコンピュータ情報 : 富士通

    「ネットポジティブ」とは、社会・環境への積極的な貢献を目指すビジネスアプローチ。グローバル企業として取り組むべきアプローチを企業戦略に取り入れることで、社会課題の解決と財務的なリターンの最大化の両立を長期的に叶え、顧客、投資家、社会全体の期待を上回ることを可能にします。

    日本のコンピュータ情報 : 富士通
  • オブジェクト指向プログラムでgetter/setterメソッドを使わなければならない10の理由

    オブジェクト指向プログラムで getter/setterメソッドを使わなければならない 10の理由 福盛 秀雄 fukumori at m.ieice.org JavaC++などのオブジェクト指向言語でプログラムを書いているときに、単純なメンバ変数を参照したり操作するために anObject.getX() [以後これをgetterメソッドと呼ぶ] とか anotherObject.setY(y) [以後これをsetterメソッドと呼ぶ] と書くのはなぜだろうと思ったことはないだろうか? int型の変数ひとつを操作するのになぜわざわざメソッドを定義するのだろう? 単純に代入を使えばいいじゃないか? この文章はそんなあなた(かつての僕も含む)が、getter/setterメソッドを使うべきである理由についてまとめたものである。 ということで早速論へ。 1. クラス内部のデータ表現を変えた場

    iww
    iww 2019/06/17
    列挙された理由がそのまま、今となってはgetter/setterを積極的に使用しなくても良い・しない方が良い理由になっている
  • Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー

    UNIX でプロセスを一時的にスリープさせるには sleep(3) が使えます。sleep() は引数に秒単位でしか時間を指定できないので、より短い時間を指定したい場合は usleep(3) (マイクロ秒) や nanosleep(2) (ナノ秒) を使うことになります。sleep(), usleep() はライブラリ関数、nanosleep() はシステムコール*1です。 この usleep() や nanosleep() で 1ms 程度の短い時間プロセスを停止したとして、正確にその時間だけ停止させることはできるでしょうか。http://shiroikumo.at.infoseek.co.jp/linux/time/ にあるコードを参考に、実際に動かしてみます。カーネル 2.6.19 x86_64、CentOS 5 で試します。 まず、nanosleep() で 1ms のスリープを行

    Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー
  • 【C言語】引数なしの関数には void を書いた方がよいという話 - 0x19f (Shinya Kato) の日報

    C言語で引数なしの関数を書くときに void を書かないのと書くのとで挙動が違うなんて話を聞いたことはないでしょうか? つまり void func() {} と void func(void) {} で挙動が違うという話ですね。 自分も話だけ聞いたことがあったものの2つがどう違うのかはわかっていなかったため、C言語の規格を読みながら何が違うのかを調べてみました。 結果だけ述べると、この2つの書き方は同じように見えて実は明確な違いがあり、引数がない関数を定義/宣言する場合には後者を使うのが適切です。 とは言え、2つの書き方で違いがあるとかほんとかよ?と思う方もいると思うので、まずはこの二つがどう違うのか見ていきましょう。 2つの関数の書き方の違い 早速ですが、以下のプログラムを見てみましょう。 // func_empty.c void func() {} int main(void) { f

    【C言語】引数なしの関数には void を書いた方がよいという話 - 0x19f (Shinya Kato) の日報
    iww
    iww 2019/04/18
    『K&R スタイルの関数定義/宣言は C99 の規格で廃止予定とされていたらしいのですが、C11 の規格でもまだ廃止されずに残されています。』
  • printf デバッグ(デバッグプリント)の書き方

    デバッグするときはデバッガを使うのが定石ですが、なんらかの事由によりそれがかなわないときもあるでしょう。そのとき頼りになるのが片っ端から printf 文をいれていく方法、いわゆるプリントデバッグです。 CPUのレジスタなどはわかりませんが、単にどこまでプログラムが実行されたか知りたいだけ、とかならこれでもなんとかなります。2分探索で切り分けていけば、仮に100万行のコードでも高々20回の試行ですみます。 今回はこのデバッグプリントのTipsをご紹介します。 デバッグビルドとリリースビルドとで有効無効を切り替える printf デバッグするときには、リリース時にはそのデバッグプリント文は削除する必要があります。手作業でそれをやっていては削除漏れが起きてしまう可能性大です。そこで、プリプロセッサの条件コンパイルをつかってそれを自動化しましょう。 例としては下記のようになります。この例では、マ

    printf デバッグ(デバッグプリント)の書き方
    iww
    iww 2019/02/06
    #define DEBUG_PRINTF 1 ? (void)0 : printf みたいな手抜きではなく、ちゃんとした書き方版