タグ

cとmacroに関するmas-higaのブックマーク (3)

  • linuxカーネルで学ぶC言語のマクロ - Qiita

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。

    linuxカーネルで学ぶC言語のマクロ - Qiita
    mas-higa
    mas-higa 2017/03/03
    最初からつまずいた。do{ }while(0) 昔どっかで見たけど忘れてた。今まさに { } で囲んだだけのマクロがあるわー。if - else で使うとコンパイルできないのも再現してたのに、思い出せなかったわー。
  • MSのあまりにもひどいマクロ - ここは匣

    2013-10-10 MSのあまりにもひどいマクロ maxとかminとかが使えないと思ったらminwindef.hとかいうところでマクロとして定義されていてキレそうっていうかこれは完全にブチギレ— 秋弦めい (@maytheplic) October 10, 2013 http://stackoverflow.com/questions/5004858/stdmin-gives-error StackOverflowにも同じような事言ってる人が居たので引用。 どうやら以下のようなコードがエラーになるらしいです #include <algorithm> #include <Windows.h> int main() { int k = std::min(3, 4); return 0; } error C2589: '(' : illegal token on right side of

    mas-higa
    mas-higa 2013/10/11
    どっちが避けるべきかは、勝ったものが正義的な感じする。
  • Appleマクロの恐怖 - Faith and Brave - C++で遊ぼう

    Avoid bad Apple macros - Trac 【inspect】 Apple macro check Appleが用意している<AssertMacros.h>では、check, require, verify, check_errorというのがdefineされていて、Boostで全体的に名前衝突が発生しているらしい。 これはなんとかしないと・・・という動きがあります。 とくに、checkという名前はSFINAE周りで多く使われてるのでまずい。

    Appleマクロの恐怖 - Faith and Brave - C++で遊ぼう
    mas-higa
    mas-higa 2013/10/11
    Apple信者の恐怖w
  • 1