Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cの衛生的マクロ


ここでは、Cでの衛生的なマクロを確認します。Cでのマクロの使用法はわかっていますが、識別子が誤って取得されたために、目的の結果が返されない場合があります。

次のコードを見ると、正しく機能していないことがわかります。

#include<stdio.h>
#define INCREMENT(i) do { int a = 0; ++i; } while(0)
main(void) {
   int a = 10, b = 20;
   //Call the macros two times for a and b
   INCREMENT(a);
   INCREMENT(b);
   printf("a = %d, b = %d\n", a, b);
}

前処理後のコードは次のようになります-

#include<stdio.h>
#define INCREMENT(i) do { int a = 0; ++i; } while(0)
main(void) {
   int a = 10, b = 20;
   //Call the macros two times for a and b
   do { int a = 0; ++a; } while(0) ;
   do { int a = 0; ++b; } while(0) ;
   printf("a = %d, b = %d\n", a, b);
}

出力

a = 10, b = 21

ここでは、の値が更新されていないことがわかります。したがって、この場合、衛生的なマクロを使用します。これらの衛生的マクロは、識別子の偶発的なキャプチャを作成しないことを保証する拡張であるマクロです。ここでは、拡張中のコードとのインターフェースのリスクを伴う可能性のある変数名は使用しません。ここでは、別の変数「t」がマクロ内で使用されています。これはプログラム自体では使用されません。

#include<stdio.h>
#define INCREMENT(i) do { int t = 0; ++i; } while(0)
main(void) {
   int a = 10, b = 20;
   //Call the macros two times for a and b
   INCREMENT(a);
   INCREMENT(b);
   printf("a = %d, b = %d\n", a, b);
}

出力

a = 11, b = 21

  1. グループポリシーを使用して、MicrosoftOfficeでマクロが実行されないようにします。

    マクロをブロックし、その結果、インターネットからのマクロウイルスまたはマクロを標的としたマルウェアファイルが Microsoft Officeで自動的に開いて実行されるのをブロックできます。 Windows 10のグループポリシーを使用したWord、Excel、PowerPointドキュメントなどのプログラム。 Officeマクロ 基本的には、Visual Basic(VBA)で記述された小さなコードであり、選択した反復タスクを実行できます。これらはそれ自体で便利ですが、マルウェア作成者はこの機能を悪用してコンピューターシステムにマルウェアを導入することがよくあります。 マクロウイルス は

  2. Windows 10 でキーボード マクロを作成する方法

    Windows 10 で必要なアプリにアクセスするためのショートカットを作成するには、さまざまな方法があります。簡単にアクセスできるように、Windows 10 アプリを [スタート] メニュー、タスク バーにピン留めするか、デスクトップにショートカットを作成します。アプリが Windows 10 で日常的に使用するものである場合は、アプリをすばやく開く必要があります。そこでキーボード マクロの出番です。Windows 10 PC にタッチスクリーンがないか、複数ボタンのマウスにアクセスできない場合は、Windows 10 でキーボード マクロを使用する必要があります。 マクロとは? Bin