タグ

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

  • 関連タグはありません

タグの絞り込みを解除

cに関するkat0usiのブックマーク (8)

  • C 言語 マクロ講座 # ## 編: uyota 匠の一手

    # と ## はマクロ関数で使う。 # と ## 共に古くからマクロで実装されている。ところが、これを知らない人達がとても多い。 十年、二十年と C 言語を使ってきたという人でも知らないと言う人が結構いる。これを知らないから、余計なコードを書き、バグを増やし続けるのである。 高級言語と呼ばれる言語の中でも、単純な部類に入る C 言語。その C 言語よりも単純なマクロ言語の構文を把握していないのである。マクロ自体では、できることもたかが知れている。マクロでできるのは、ごく限られた置換や条件分岐処理程度のみだ。C 言語の構文だけでは、それこそ複数のファイルにコードを分けて書くこともできない。 ライブラリを作るのなどは、それこそ不可能だ。 しかし、C 言語はその欠点をマクロ言語を使い前処理することにより、強力な力を得た。C 言語以降もいくつもの高級言語が生まれてきたが、前処理を組み込んである言語

    kat0usi
    kat0usi 2013/10/14
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    kat0usi
    kat0usi 2013/07/18
    wprintf関数を使ってワイド文字列を出力する際には、L"%ls" と書きます。 単に L"%s" と書いた場合には、渡された文字列がマルチバイト文字列であるとみなされ、それを自動的にワイド文字列へ変換して出力しようとします
  • Cでポピュラーな脆弱性とバッファオーバーフロー(前編)

    Insecure Interaction Between Components(6 errors) ソフトウェアコンポーネント間のセキュアでないやりとり SQLインジェクションやクロスサイトスクリプティング(XSS)のような類の脆弱性 Porous Defenses(11 errors) 不完全な防御策 認証関連の不備や暗号化機能の不適切な使い方など Risky Resource Management(8 errors) リソース管理の問題 バッファオーバーフローや整数オーバーフロー、書式指定文字列の脆弱性など 1つ目に分類されているSQLインジェクションやXSS(クロスサイトスクリプティング)などは、やりとりされる情報の意味がコンポーネント間で変わることから問題が発生するパターンです。 例えば、入力データからSQL文を組み立てるコンポーネント、そのSQL文を受け取ってデータベースから必要

    Cでポピュラーな脆弱性とバッファオーバーフロー(前編)
    kat0usi
    kat0usi 2012/12/27
    スタック上にあるローカル変数の隣に配置されているオブジェクトには、他のローカル変数、関数呼出し時の引数、関数呼出しのときに退避されたレジスタの内容、関数の呼出し元への飛び先アドレス、などがあります。
  • KMC Staff Blog:GCCでunsignedの変数を0と比較したときにwarningを出すオプション

    2012年01月24日 GCCでunsignedの変数を0と比較したときにwarningを出すオプション 昨日、自分で修正したプログラムが意図した通りに動作しなくて少し悩んだのですが、それはunsignedの型の変数に負数を代入して、0と比較している部分が正しく動かなかったためでした。unsignedの型の変数は0より小さくなることはありません。 でも、こんなケースではgccはwarningを出して教えてくれたはず。実はオプションの指定が必要でした。 サンプルプログラム 以下のプログラムではxがどんな値でも5行めのif文が真になることは無いので常にret = 2になります。 $ cat -n b.c 1 int 2 b(unsigned int x) 3 { 4 int ret; 5 if (x < 0) { 6 ret = 1; 7 } else { 8 ret = 2; 9 } 10

    kat0usi
    kat0usi 2012/01/25
    warningの出る種類の多さに関しては -Wextra = -W > -Wall
  • 「A && B || C」の評価結果に気をつけろ:"warning: suggest parentheses around '&&' within '||'" - 新・日々録 by TRASH BOX@Eel

    もう5年以上C言語でコードを書いていて、しかも今ではそれで収入を得ている身だというのに、実は今まで「A && B || C」がどう評価されるのかイマイチ確信を持てていなかった。 いや、Cの論理演算子は左から右に順に評価していくとか短絡評価されるとか、その辺りは理解している。 ただC言語の仕様に基づく解釈として、例えば「A && B || C」と書いた時の評価結果は、 「(A && B) || C」 「A && (B || C)」 このどれと等しいのか? 「優先度は '||' よりも '&&' の方が高いので、1番目の解釈になるのだろうか?」と思いつつ、特に調べるわけでもなく放置していた。 で、あやふやなまま過ごしていたら、つい最近になってとあるソースコード中に「A && B || C」な部分があって、TDM-GCCでコンパイルしたら警告が出た。 warning: suggest paren

    「A && B || C」の評価結果に気をつけろ:"warning: suggest parentheses around '&&' within '||'" - 新・日々録 by TRASH BOX@Eel
    kat0usi
    kat0usi 2011/12/26
    「A && B || C」は「 (A && B) || C」
  • 配列 練習問題4解答

    配列 練習問題4 解答解説 練習問題4: 終端記号 END をもつ整数型配列内のデータを,他の整数型配列へ複写する関数を作れ。今回は,関数名を含めて関数仕様も考えることが問題である。 関数名は, data を copy するということで, dataCopy とした。 void dataCopy(int src[], int dest[]) の仕様 終端記号 END をもつように約束された整数型配列 src と整数型配列 dest とを引数にとり,src のデータ内容を dest へ複写しその最後に終端記号 END をつける.戻り値はない. 引数の変数名 src は source(送り元)の略であり, dest は destination(行き先)の略である. void dataCopy(int src[], int dest[]) { int i; for (i = 0; src[i] !

    kat0usi
    kat0usi 2011/01/13
    strcpy(dest, src) の引数は, dest, src の順に並んでいる.このようになった理由は, a = b という代入文では,左側に代入先が,右側に代入元がある,という
  • マルチコア時代の新機軸! Snow LeopardのGCD (1/4)

    Mac OS X 10.6 Snow Leopard」は、アプリケーションやカーネルを64bitに対応させたことで性能の向上を図っている(関連記事)。 ただ、それだけでは実行速度を大きく引き上げることはできない。そこでSnow Leopardは、「Grand Central Dispatch」(GCD)と「OpenCL」というふたつの仕組みも用意している。今回はこのうち、プログラムを並列化する枠組みであるGCDについて取り上げよう。 目次 64bit対応 アプリケーションを64bit化、カーネルを64bit化、Windowsの64bit化は? Grand Central Dispatch GCDが生まれた背景、GCDとは何か?、GCDの仕組み、GCDを使ったプログラミング、GCDの今後と将来 OpenCL OpenCLが生まれた背景、OpenCLの仕組み、著名企業がサポート コラム マル

    マルチコア時代の新機軸! Snow LeopardのGCD (1/4)
    kat0usi
    kat0usi 2010/12/13
    アムダールの法則からプログラムの中に10%の非並列化部分があるだけで、並列化による性能向上が半分になる。半分しか並列化可能でないならば、いくらコアを投入してもコアが2つのときと性能が変わらない
  • Account Suspended

    Account Suspended This Account Has Been Suspended

    kat0usi
    kat0usi 2010/12/06
  • 1