する#include <stdio.hの>
に#define ADD(A、B)のprintf(#A "+" #B "=%D \ n"は、((A)+(B)))
の#define XNAME(N)×# #N
の#define PRINT_XN(N)のprintf( "X" #N "=%D \ n"は、X ## n)は
、INTメイン(ボイド)
{
ADD(4,5)。
int型XNAME(1)= 14。
PRINT_XN(1)。
0を返します。
}
ヒント再びまた、マウスのコードを置くことができるvscodeで定義されている2つについて学習した後、あなたは、拡張マクロ定義の最終結果を見ることができます。このエディタは、それが推奨され、私はコードを書くと彼のヒット。
Aは、マクロの仮パラメータであれば1は、#Aは、「A」パラメータ名の文字列に変換されます。このプロセスは、(文字列化)の文字列と呼ばれています
2、オペレータ及び#同様である##演算子クラスマクロ機能(パラメータ化されたマクロ)交換部品のために使用することができます。##オペレータは、トークン2つのトークンに組み合わせることができます。
結果:
ここで##演算子は、利便性の多くをプレイしていないようでしたが、私たちが使用していない感じていただけます。しかし、演算子を使用して##時にカプセル化と手続きの可読性を向上させることができます。GPIOハードウェアドライバにSTM32のプログラムを実行しているリアルタイムOSは、次のコードを持っています:
#define __STM32_PIN(index, gpio, gpio_index) \
{ \
index, GPIO##gpio##_CLK_ENABLE, GPIO##gpio, GPIO_PIN_##gpio_index \
}
マクロのような使用を想定し:
__STM32_PIN(7, C, 13)
このマクロは次のように拡張されます
{7, GPIOC_CLK_ENABLE, GPIOC, GPIO_PIN_13}
その後、設定するためにそれを取るにしてこれは、簡単にハードウェア・ピンをリストするために使用することができます