LoginSignup
0
0

C言語の#define文マクロをC++のTemplateか何かにする方法

Last updated at Posted at 2020-08-11

MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

C puzzle bookで出力マクロ

misra_c.h
#define PR(a,b) (void)printf(" "#a  " = %" #b "=%x\n", a,a)

をC++のTemplateで書く方法がないかこの2年ほど考えている。

考えているだけで、手が動いていないのが敗因。

まだ名案が浮かんでいない。

C++のコーディング標準で、Cのマクロは使わずに、できるだけTemplateを使うように誘導しようとしてきた。

MISRA-C 2008 では、
「Rule 16-0-4 Required Function-like macros shall not be defined.」
と定義している。

しかし、#、##は必ずしもうまくいかないのかもしれない。

「Rule 16-0-6 Required In the definition of a function-like macro, each instance of a parameter shall be enclosed in parentheses, unless it is used as the operand of # or ##.」

Cパズルブック

改訂版, Alan R. Feuer/アラン・R. フューアー 2000-12
51QQZNVK6JL._SX374_BO1,204,203,200_-3.jpg

C言語教育の際に、このパズルブックを必ず解いてもらっている。
サンプルを見て、結果が何になるかを予測しれもらい、
実際にコンパイルして結果を見て、なぜ、予測と違うかを確かめてもらっている。
全問正解したのは、いまだに誰もいない
#include
つまり、C言語の間違えやすいところを、パズル形式で解説しているため、
C言語の初心者から、上級者と自分では思っている人まで、
幅広く利用するとよい本である。
ポインタ、構造体の間違えやすい点を示すよい教材であると考え、
10年以上、紹介してきて評判もよい。
仕事でC言語を利用することがあるなら、1度は解いてみてください。

C言語/C++に対する誤解、曲解、無理解、爽快。

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0