タグ

Cに関するmackey13のブックマーク (20)

  • C99の仕様

    長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。 連載 INDEX 次回 → C言語(以降、単にC)はDennis Ritchieによって1969~1973年の間にベル研にて開発されたプログラミング言語である。長い歴史を持つと共に非常にポピュラーな言語で、プログラマーでCを知らない人はまずいないと言っていいだろう。プログラミング言語のシェアを調査しているTIOBEでも、ここ最近は常に1、2位を占めている。 Cの言語仕様は今から25年近く前である1989年に初めて規格化され、これは一般に「ANSI-C」と呼ばれている。ANSI-Cは長らくCの言語仕様のスタンダードの位置を占め、世の中の大半のプログラマーは、このANSI-Cに慣れ親しんでいることだろう。しかし、実はCの言語仕様はその

    C99の仕様
  • コマンドライン引数の取得とgetopt - ファイヤープロジェクト

    コマンドライン引数を取得する方法と,それを簡単に行なうライブラリ関数getoptについて. 引数の取得 とりあえず引数を取ってみる getopt 引数の取得いろんなコマンドはいろんな引数をとる. int main(int argc,char *argv[]) のargcが引数の数でargvが引数の値である.0番目の引数の値はプログラム自身の名前である. とりあえず引数を取ってみる次のプログラムは全ての引数を表示するだけのものである. includeint main(int argc,char *argv[]) { int i; for(i=0;i<argc;i++){ fprintf(stdout,”arg %d is %s\n”,i,argv[i]); } exit(0); } これを実行すると以下の感じになる. $> ./getArgs hoge fuga arg 0 is ./get

  • C言語新規格 "C1X"

    C99から10年ぶりにC言語の規格が新しくなるようです ドラフトはこちら 正直読む気になれない長さです。 さて、こちらのC1X - Wikiepdia[en]記事にC99からの変更点がまとめてあるので こっちを読みましょう。 以下超訳。ツッコミ大歓迎 (というかあまりよくわかってないです) Alignment specification (_Alignas specifier, alignof operator, aligned_alloc function, <stdalign.h> header file)メモリの境界を指定したり確保したりする(アライメント関係の)関数がstdalign.hというヘッダーに纏められるようです The _Noreturn function specifier戻らない関数の修飾子 これはabort()みたいな帰ってこない関数の修飾子が出来たのでしょうか T

  • プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!

    僕がプログラミングに触れた当時は、プログラミングといえば「まず C 言語」でした。それから 10 年以上が経ちました。学校の授業や企業の研修では未だに C 言語を教えているところがあるようです。関数型プログラミング言語という波が来ている 2012 年にもなって未だに C 言語をやっているというのはまるで進歩が無く残念な気もしますが、比較的多くのプログラマに浸透している共通言語を最初に教えるというのは、一方では喜ばしい事だと解釈する事もできるのかもしれません*1。まぁとにかく、意にせよ不意にせよ現場で プログラム初心者に C 言語を教える羽目になった 人がたくさんいて、プログラム初心者なのに C 言語を学ばざるを得なくなった 若者がたくさんいるということです。 C 言語を教えるときに避けて通れないのがポインタで、プログラム初心者が C 言語を学ぶときにやたらとつまずく人が多いのがポインタ

    プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!
  • C言語・C++言語用テスティングフレームワーク - Cutter

    最新リリース 2019-09-13にリリースされた1.2.7が最新です。 [ダウンロード] [変更点] Cutterとは Cutterは書きやすさ・デバッグのしやすさを重視したC言語・C++言語用のテスティングフレームワークです。メンテナンスしやすく、利用効果の高い単体テスト(ユニットテスト)の開発を支援します。 また、テストを苦痛ではなく、楽しいものにすることも重視しています。スクリーンショットはテスト結果の通知機能を利用している様子です。文字としてテストのパス・失敗を伝えるだけではなく、視覚的にも通知することで、テスト結果をわかりやすくします。わかりやすいので、頻繁にテストを実行したくなります。この機能はnotify-sendコマンド(Linuxや*BSDなどの場合)またはgrowlnotifyコマンド(macOSの場合)を利用します。 動作環境 CutterはDebian GNU/L

  • zlib の使い方

    矢田 晋 Abstract: zlib は圧縮アルゴリズムの一種である Deflate のライブラリであり,C#, Haskell, Java, Perl, Python, Ruby など,主要なプログラミング言語では,軒並み使えるように整備されています.圧縮・伸長が高速なこともあり,ディスク領域の有効利用や通信量の削減を目的として,zlib は気軽に利用できます.記事は,C 言語から zlib を利用する方法の解説になっています. はじめに 最新版のマニュアルは公式サイトで提供されています.また,zlib のヘッダである zlib.h には,マニュアルと同様の内容がコメントとして記述されています.利用している zlib が最新版と異なる場合,zlib.h を確認する方が良いかもしれません.おそらく /usr/include/zlib.h としてインストールされています. http://

  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

  • memologue - UNIX上でのC++ソフトウェア設計の定石 (2)

    鉄則2: シグナルハンドラで行ってよい処理を知ろう sigaction関数で登録したシグナルハンドラで行ってよい処理は非常に限定されている 次の3つの処理だけが許されている 自動変数の操作 “volatile sig_atomic_t” 型の大域変数の操作 「非同期シグナルセーフ」関数の呼び出し これ以外の処理を記述しないこと! 説明: シグナル受信時に何らかの処理を行うためには、シグナルハンドラと呼ばれる関数を用意し、それをsigaction関数でシグナル名と紐付けておけばOKです。しかし、シグナルハンドラ内で行ってよい処理は、上記の通り非常に限定されています。これを把握しないまま奔放なコードを書くと次のような現象が起き得ます: 問題1: プログラムがデッドロックする危険がある タイミングに依存する、再現困難なバグの原因となる デッドロックの発生が典型例だが、それ以外にも関数の戻り値不正

    memologue - UNIX上でのC++ソフトウェア設計の定石 (2)
  • とあるプログラム C++エンディアン変換(リトル←→ビッグ)

    仕事でエンディアン変換を行なう事になった。で、作ったのが下記コードである。 floatやdoubleはビットシフトできねーので泥臭くなってます。 結局は全ルーチンunion組んでループで逆転という方が綺麗なコードになりました。 int Convert(int val) { return ((val<<24) & 0xff000000) | ((val<<8) & 0x00ff0000) | ((val>>8) & 0x0000ff00) | ((val>>24) & 0x000000ff) ; } float Convert(float valf) { int val; memcpy(&val,&valf,sizeof(val)); // Not BitShift float val = (val<<24) | ((val<<8) & 0x00ff0000) | ((val>>8) & 0

  • cppcheck 日本語情報トップページ - OSDN

    C/C++用の静的解析ツールです。メモリリーク、アロケーション(確保と解放)のミスマッチ、バッファオーバーラン、さらに多くのチェックを行います。目標は、0%の誤認識としています。 ダウンロード 最新ダウンロードファイル cppcheck-2.7-x64-Setup.msi (日付: 2022-02-05, サイズ: 21.55 MB) readme.txt (日付: 2022-02-05, サイズ: 294 B ) cppcheck-2.7.zip (日付: 2022-02-05, サイズ: 4.06 MB) cppcheck-2.7.tar.gz (日付: 2022-02-05, サイズ: 3.76 MB) cppcheck-2.7.tar.bz2 (日付: 2022-02-05, サイズ: 3.07 MB)

    cppcheck 日本語情報トップページ - OSDN
  • SourceMonitor を無料でダウンロード

  • TCCでC言語学習 - 0th server

    学習に最適な開発環境ってどんなものだろう? やっぱり書いたらすぐに実行して、その場で結果を見たいよね。 そうは言ってもC言語って、コンパイルして実行ファイルを作ってから実行しないといけないし。 ちょっとしたコードを試すにも、毎回プロジェクトを作るのもなんだかなぁ・・・。 でも大丈夫!これから紹介する環境なら、エディタで編集してそのまま実行。 ストレスなくC言語の学習が可能です。 TCCって何? Tiny C Compiler(TCC)はコンパイル速度がとても速いC言語コンパイラで、誰でも無償で手に入れることが出来ます。 C言語の標準規格の第2版であるC99に対応しています。 TCCは実行ファイルを作ることなく、C言語のプログラムを実行することができます。 TCCはインタプリタなの? TCCはコンパイラであり、インタプリタではありません。しかしオプションの指定によりJITコンパイルによる実行

  • C MAGAZINE - プログラミングの禁じ手Web版 C言語編

    プログラミングの禁じ手Web版 C言語編 /Top/今週のソースコード/プログラミングの禁じ手Web版 C言語編/ [←前] [次→]  [C言語版一覧] [C++版一覧] 誌2000年4月号に掲載された「特集1 プログラミングの禁じ手 C言語編」よりWebサイト用に抜粋したものです。ソースコードとともに公開いたします。作者の真紀俊男様に感謝します。 プログラミングは,「なぜかうまく進めなくなる」,「だんだんと期待した通りに動かなくなる」など,とても「イヤ」な面があります。そうした現実に直面したときに稿がお役に立てれば幸いです。

  • 総合目次 - 苦しんで覚えるC言語

    苦Cの内容の転載などは自由ですが、苦Cからの引用であることを明記してください。 (どこかに「苦Cより」と書かれていればOKです。) 学校や会社などで生徒(新入社員)へのテキストとして使用することも自由です。 その際、内容を修正したり、印刷して配布するのも自由です。

    総合目次 - 苦しんで覚えるC言語
  • 方法: Windows Phone Marketplace 用のスクリーンショットを作成する

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    方法: Windows Phone Marketplace 用のスクリーンショットを作成する
  • Eclipse with CDT

    このページは、フリーのJava統合開発環境Eclipse(エクリプス)で、C/C++を開発行おうというけったいな事を実現するための準備を目指します。 Eclipseの大きな特徴として、プラグインによって簡単に機能拡張が行えるということがあります。EclipseでC/C++の開発を行う際には、CDTプラグインを導入する事になります。 このページはcdt user FAQを参考にして作成しました。ただ、リンク先のページの更新がのびのびとなっているようでしたので、新しく書き起こしています。何かおかしいところがあればメールして頂けると助かります。 Eclipseの準備 Eclipseは来はJava用の統合開発環境であり、Eclipse自体もJavaのプログラムとして開発されています。ですから、Eclipseを動かすためにはまずJava2SDKがインストールされている必要があります。また、Java

  • PC�o������ | Unix�nerrno����

    �����������d���������������������o�����������B �����������Y��������������������������(*�L�D�M) Unix�n������タ�s�����G���[�����������������G���[�l���������B �R�������������������������B�B�B��������Web������������������(T_T) ��������ゥ���������������������������������������B Unix�n�������������v���O�����������������A�����I���l��-1�������A ����errno�������G���[�R�[�h�����������A�������������������

  • プログラミング言語Cについて知ろう

    プログラミング言語の基となる「C」。正しい文法や作法を身に付けよう。Cには確かに学ぶだけの価値がある(編集部) プログラミング言語Cは開発の仕事に役立つ人気のあるプログラミング言語です。 この連載では、Cでのソフトウェア開発をこれから始めようという方や、使った経験はあるが勉強し直したいという方のために、基をきちんと押さえながら勉強できるような解説をしていきます。 なるべく正しい文法や作法を身に付けていただくためにJIS規格を基に解説しますが、それだけにこだわらず実際の開発で役に立つことを分かりやすくお伝えしていきます。 Cの成り立ちと規格 まずは、Cの成り立ちと規格について知っておきましょう。ちょっと堅苦しい感じがするかもしれませんが、歴史を知っているとなぜこういう書き方をするのか、こういった機能があるのかといったことが分かります。また、規格を知っているとプログラミングをしていて何か

    プログラミング言語Cについて知ろう
  • 【ハウツー】Cアプリを高速化せよ! - 正式リリースされたgoogle-perftoolsを試す (1) google-perftoolsとは | エンタープライズ | マイコミジャーナル

    google-perftoolsはGoogleによって提供されている、C/C++アプリケーションのパフォーマンスを改善するための開発ツールキットである。2005年3月に初めて公開され、およそ4年を経て7日に正式版がリリースされた。The BSD Licenseの下で提供されており、LinuxをはじめとしてFreeBSD、Mac OS X、Solaris 10、Windows XPなど、各種プラットフォームでの動作が確認されている(ただし、Linux以外については一部機能を除く)。 google-perftoolsには次に挙げる4つのツールが含まれている。 高速メモリアロケータTCMalloc ヒープチェッカー ヒーププロファイラ CPUプロファイラ TCMalloc(Thread-Caching Malloc)は通常のmallocよりも高速なメモリ割り当てを実現するライブラリであり、テスト

  • 1