タグ

Cに関するtomio2480のブックマーク (38)

  • 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の仕様
  • Cで作るコンテナもどき #1 - Qiita

    はじめに この記事はFuraITアドベントカレンダー22日の記事になります。 遅れてごめんなさい。昨日が22日だと思っていました。 またこちらで発表した内容と近いものになります。多分発表したときのほうが面白いので、気になる方はどうぞご参加ください。 まったくFuraITとは関係ありませんが気にしないで続けていきます。 環境 debian 9 kernel 4.9.0-8-amd64 作っていく "#1"ということで、今回はC言語でforkとexec、waitを扱う部分までやりたいと思います。続けていくのかはわかりません。 fork まずはプロセスをforkしてあげる必要があります。 Linux特有のライブラリもあるのでWindowsの方は自分でなんとかしてください。 #include<sys/types.h> #include<unistd.h> #include<stdio.h> int

    Cで作るコンテナもどき #1 - Qiita
    tomio2480
    tomio2480 2018/12/24
    こういう技術記事こそたくさん出てきてほしいね
  • Interrupt routine in XC8 | Microchip

    tomio2480
    tomio2480 2018/08/18
    “void __interrupt () my_isr_routine (void) {}”割り込み函数,HI-TECHコンパイラの時の書き方で書いてダメだったので調べたらこれだった
  • GDB online Debugger | Compiler - Code, Compile, Run, Debug online C, C++

    /****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby, C#, OCaml, VB, Perl, Swift, Prolog, Javascript, Pascal, COBOL, HTML, CSS, JS Code, Compile, Run and Debug online from anywhere in world. ******************************************************************************

    tomio2480
    tomio2480 2018/02/18
    急にプログラミング,コーディングしたいと参入者が現れたとき,環境構築しなくてもいいこれを咄嗟に使い始めた.標準入力をあらかじめ入力しておくタイプじゃないので,安心して使っている.
  • Rand() is terrible... | Microchip

    tomio2480
    tomio2480 2016/01/11
    今回はちゃんと使えてない気がするので,これからの勉強課題.
  • MPLAB X IDE

    <BODY> <P>このページを表示するには、フレームをサポートしているブラウザーが必要です。</P> </BODY>

    tomio2480
    tomio2480 2016/01/11
    ここすごくわかりやすいし,大切なことがたくさん書いてあるので,重宝している.
  • #と##演算子

    文字列化演算子 マクロ関数だけで使用できる、便利な演算子が用意されています そのひとつが文字列化演算子です マクロ関数で受け取った値に対して#記号をつけることで それを文字列、すなわちダブルクォーテーションをつけた状態に置換えます (プリプロセッサディレクティブであることを忘れないでください。あくまでソース上で置き換わるだけです) #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(

    tomio2480
    tomio2480 2016/01/11
    今回のLEDとスイッチ指定するのめんどいと思っていると,むかし宿題で調べた記憶がよみがえってきた.そして,同じページに辿りついた.
  • PORTレジスタとLATレジスタ

    PICには、入出力ポートを制御するためにPORTレジスタ(PORTA/PORTBなど)があります。これはPIC16もPIC18も共通です。 PIC18では、これに加えてLATレジスタ(LATA/LATBなど)が追加されました。 PIC18を始めて使う時に疑問になる事の一つが、このLATレジスタだと思います。(必要性とか使い方とか) 今回は、このLATレジスタについて、実験をしながら有効性を確認します。

    tomio2480
    tomio2480 2016/01/11
    LAT素晴らしいじゃないか.
  • void (コンピュータ) - Wikipedia

    void(ボイド)は、プログラミング言語において、「何もない」といった意味の型などに使われる名前である。プリミティブとしてキーワードないし予約語であることも多い。 ALGOL68やC言語などでは、有意な値を返さないサブルーチンについて、関数としての形式上void型としている。この場合は意味的には(型理論的には)来はUnit型(英語: Unit type)である。呼び出し側に返り値を戻さない関数を書く場合に用いられる。そのような関数は、何かしらの処理、あるいは引数を出力するといった、副作用のために呼び出されるのが通例である。値を返さない手続きは関数ではなくプロシージャである、という言語(Visual BasicやPascal)もある。(「返り値を戻さない」のではなく、「呼び出し側に戻らない」のであれば理論的にもvoid型と言える) 似たものとしてnil(Null)やUnit型(英語: Un

    tomio2480
    tomio2480 2016/01/11
    脳内で C と C++ が混ざっていたので,関数の引数部分の void をどうすべきか調べた.
  • (仮)釣りと電子工作 MikroCのコツ

    MikroCでPS/2-ADB変換器のロジックを追加しているときのメモリ使用率は、つねに99%。100%超えたらメモリ節約のためにプログラムを書き換え、空いたらまたロジックを追加する、の繰り返し。メモリ節約のためのロジック書き換えにかかる時間が10で、機能追加や改良のためのロジック追加にかかる時間は1くらい。2Kワードのメモリサイズは、Cで多機能変換器を作成するには非常に厳しい。 あと、コツかどうかわからないけど。。。。 これが正しいかどうかわからないけど。。。。 ① 配列変数に絶対アドレスを指定するとバイナリのサイズがすごく小さくなることが多い ちょっとロジックを追加しただけなのに、理不尽にメモリ使用量が増えた場合などに有効。 例:unsigned short keybuf_fn_flg[32] absolute 0xA0; ② Delay_us(n)はメモリを大量に消費する。 これはD

    tomio2480
    tomio2480 2016/01/11
    これは MPLAB ではないけれども,共通するところもあるかもしれないということで,参考にした.
  • PIC C18 メモ(RAM の不足)

    tomio2480
    tomio2480 2016/01/11
    配列の作り方は気を付けようという話.バンクを意識しないと不意を突かれる.
  • Hitech PICC Pro のDelayマクロがver9.80以降で長時間対応に: エアーバリアブル ブログ

    ハンドル:エアーバリアブル 電子工作、パソコン、旅行など自分の趣味の日記です。 たまにニュースや面白い動画の紹介も行っております。 有効な情報はホームページで取り扱っておりますので是非ご覧ください。 気が向いたらコメントします。 【警告】 ブログ内容で製作・改造・分解記事について、研究や学術の目的のために公開しているものです。十分な電気工作の知識を学習の上、全て自己責任で行ってください。 【注意】 コメント投稿された場合、書き込まれたかをご確認下さい。一時的なスパム対策でURLが含まれているコメントが投稿できない場合があります。その場合はttp:// などのh抜きでお願いします。 その他、サイトポリシーをご覧下さい。

    Hitech PICC Pro のDelayマクロがver9.80以降で長時間対応に: エアーバリアブル ブログ
    tomio2480
    tomio2480 2016/01/11
    __delay_*s() が結構大きい数値まで対応したよという話.今回は自分で書くの面倒だったから,使ったけど少しメモリ食うねという感じ.
  • PIC:メモリが足りません : ここんところ++

    ここんところ++ ゆく河の流れは絶えずして、しかも、もとの水にあらず。 よどみに浮ぶうたかたは、かつ消え、かつ結びて、久しくとゞまりたるためしなし。 世中にある、人と栖と、又かくのごとし。 PIC12F683でアナログ回路の検証を行ってますが、まぁ何でもかんでもコンデンサ入れたらエエというもんでもないで、という事をよく理解しました。 ノイズ除去の為のコンデンサが逆に発振の契機になったりします。 例えばコンデンサ無しだと発振しないのに、取り付けた途端に、収まり悪くモーターがエライ動きをします。 実際問題、あのクソ重たいワイヤー繋いだら、こんなに発振することは無いと思いますけれども、定常状態でもあんまり気分が良い訳でもないですね。 さて組込みC言語の話。 色々なフェイルセーフを入れて行くと、だんだんメモリの上限が見えてきました。 少し試してみたところ、floatはムサクサメモリをうという事が

    PIC:メモリが足りません : ここんところ++
    tomio2480
    tomio2480 2016/01/11
    char a[10]={0}; やめて memset 使おうという話.
  • 変数初期化(XOR)に関しての意見 - プログラマ専用SNS ミクプラ

    お世話になってます。 今回は変数初期化(XOR)に関して、みなさんを意見を聞きたくて書き込みしました。 c言語の初期化で、一般的だと思われるのは int cnt = 0; だと思います。 私は学生のころ、ゲームプログラミング(C,C++)を勉強していまして そのころの講師に、体感では分からないけどXOR初期化の方が早いよと習いました。(何回も初期化する場所や大型のプログラムなら) その後、初期化に関しては cnt ^= cnt; といった形で初期化してきましたが、その後ゲーム関係ではありませんが、 組み込み系の企業に就職した際の研修で、XOR初期化をしていたところ、 XORで初期化をするなと怒られました。 理由としては、見る側が分かりづらいということです。 海外の人たちはXORでの初期化何て分からないと言われまして(//初期化みたいなコメントを付けましたが)それ以降使ってきませんでした。

    tomio2480
    tomio2480 2016/01/11
    XOR 初期化は初めて見たときに感動してから,アセンブリだったら命令数少ないなと高校の時から使ってた.ただ,PIC で試したら == の方が軽くなった.コンパイラに任せるのが一番と学習.
  • HI-TECH Cのdelay関数 | 怪盗列車(旧・本館)

    一定期間更新がないため広告を表示しています

    HI-TECH Cのdelay関数 | 怪盗列車(旧・本館)
    tomio2480
    tomio2480 2014/09/15
    delay と _XTAL_FREQ
  • PICマイコンで遊ぶ 超入門編(C言語) MPLAB X IDE編 | 技術系のど根性

    こんばんは! 仕事も正月休みに入り、何をしようかウキウキしているゆってぃです! 実は今日が正月休み初日なのですが、とりあえずブログの更新くらいしかやるべきことが思いつかなかったので、こうして記事を書き始めてしまいました。 さて、今回は久々にPICマイコン関連の話です。 実は当ブログ、当に多くの方からPIC関連の記事にアクセスをいただいております。 みなさま、当にありがとうございます。 多くの方がご覧になってくださるお陰で、僕自身も新たな知識を身につけようという意欲が沸いてくるのです。 いや、これ当ですよ(笑) だって最近、このブログの更新以外に楽しみがないんですもん(涙) さて、以前の記事(MPLAB導入)で、MPLABの導入からプログラムのビルドまでをご紹介致しましたが 現在ではMPLAB X IDEという次世代のIDEがMicrochip社から提供されています。 となれば、当ブロ

  • MPLAB® XC Compilers | Microchip Technology

  • "main"について - OKWAVE

    >予約語の中に"main"はありませんでしたし、 「main」は「単なる識別子」です。 「int num;」と書いた時の「num」と同じ扱いです。 「void sub(void)」と書いた時の「sub」と同じ扱いです。 「num」「sub」と「main」の唯一の違いは「mainはライブラリのスタートアップルーチンから自動的に呼び出される」だけで、他は何も違いません。 >関数名が変数名として使えないとは書いて無いように思います。 これは「識別子のスコープの問題」です。 「int main(void)」は「外部から参照される」ので「グローバルなスコープ」を持ちます。 「int main」は「関数内でしか参照されない」ので「局所的な一時的スコープ」しか持ちません。 で「異なるスコープで同一名の識別子を定義した場合」には「内側のスコープは、外側のスコープを覆い隠す」事になっています(例参照) 例

    "main"について - OKWAVE
  • C11 (C言語) - Wikipedia

    C11とは、ISOで定められたC言語の規格のひとつ、ISO/IEC 9899:2011[1]の通称であり、その前の規格であったC99の後継である。規格策定中の暫定名称は C1X であった。新しい規格であるC11では、マルチスレッドのサポートを改善する詳細なメモリモデルなどの、一般的な現代のコンパイラでサポート済みの機能を主に規格化している。C99の実装では適合が遅れたため、C11では中核となる言語規格に準拠し易いよう特定の機能をオプションにしている[2][3]。 2011年4月にC11の最終ドラフトであるN1570[4]が発行され、2011年10月10日に新しいC11規格はその最終ドラフトレビューをパスして公式にISOによって承認された。それから2011年12月8日に参加国による決議が必要な批評もなく、ISO/IEC 9899:2011として発行された。 標準マクロである__STDC_VE

  • volatileで最適化を抑制する - 職業としてのプログラミング

    C言語やC++,Javaにはvolatileという修飾子があります。組み込み系ソフトウェアやマルチスレッドのアプリケーションを書いている方にとっては、なじみ深い存在ですが、そうでない方にはあまり縁がないのかもしれません。しかし、volatileの使い方や存在意義を知らないままコーディングを行うと、思わぬバグを引き起こす場合があります。今回は、そのvolatileキーワードについて簡単に説明したいと思います。 volatileは初期のCであるK&Rには含まれていませんでしたが、ANSI C(C89)以降のC標準規格にはconstと一緒に含まれるようになりました(constとvolatileをあわせてcv修飾子と呼ぶこともあります)。一般的なCなら必ず備えている修飾子です。 volatile修飾子の意味ですが、「プログラミング言語C ANSI規格準拠」によると、 volatileの目的は,黙っ