[C]#DEFINEマクロ
マクロ
C言語システムは、特定のタスクを示すためにコンパイラにプリプロセッサ(プリプロセッサ)を提供する.通常、プリプロセッサは、繰返し値またはタスクを事前に定義し、コンパイルオプションまたは条件コンパイルを設定できます.
#defineマクロ
配列またはダイナミックメモリを指定するポインタは、通常、繰り返し文とともに使用されます.通常、配列とメモリサイズに従って値を繰り返し出力または保存します.
#inlcude <stdio.h>
void main() {
char s1[10]; // 문자 10개 크기의 배열 선언
for (int i = 0; i < 10; i++) // 배열 크기만큼 반복
{
s1[i] = 97 + i;
}
for (int i = 0; i < 10; i++) // 배열 크기만큼 반복
{
printf("%c ", s1[i]);
}
}
実行結果a b c d e f g h i j
このコードの問題は、10回を3回繰り返すことです.配列のサイズを変更する場合は、繰り返し文の10もすべて変更する必要があります.ここでは3つの10しかないので変換には大きな問題はありませんが、使う部分が多くなるにつれて数字の変更が難しくなり、間違いの可能性も高くなります.特に、10は配列s 1のサイズを表すが、コードにはさらに多くの内容が追加されているため、10を配列サイズの独立したアイテムとして使用することができる.すなわち,異なる意味の10を混合して用いると,各意味が混同されやすい.
この問題を解決するには、マクロを定義するだけです.#defineインジケータは、変数と同じ名前で値を別の名前として定義します.通常、マクロには大文字が使用されます.
#include <stdio.h>
#define ARRAY_SIZE 10 // 10을 ARRAY_SIZE로 정의
int main()
{
char s1[ARRAY_SIZE]; // 10 대신 ARRAY_SIZE 매크로 사용
for (int i = 0; i < ARRAY_SIZE; i++) // 10 대신 ARRAY_SIZE 매크로 사용
{
s1[i] = 97 + i;
}
for (int i = 0; i < ARRAY_SIZE; i++) // 10 대신 ARRAY_SIZE 매크로 사용
{
printf("%c ", s1[i]);
}
return 0;
}
実行結果a b c d e f g h i j
これらの相関値を引き続き使用する場合は、値を1つずつ入力するのではなく、マクロを定義して使用することが望ましい.配列s 1のサイズを変更する場合は、#defineセクションの10を変更し、ARRAY SIZEマクロが使用するセクションにバッチを適用します.これは、コードが長く複雑になったときにコード入力エラーを減らすことができることを意味します.#defineマクロの利点
Reference
この問題について([C]#DEFINEマクロ), 我々は、より多くの情報をここで見つけました https://velog.io/@toezilla/C-DEFINE-매크로テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol