LoginSignup
1
0

More than 5 years have passed since last update.

C言語によるAOP

Last updated at Posted at 2016-11-02

C言語でAOP

C言語でわざわざアスペクト指向プログラミング(AOP)をやっています.
C言語ベースなので,AOPと言っても処理系のACC(AspeCt-C)はトランスレータとして実装されてます.
ここからダウンロード可能です.最新版でもVersion0.9の開発版ですが…
ACC:AspeCt-C

現在はC言語ベースのRTOSをカスタマイズするために使わせてもらっています.

ACCでAOP

かんたんにACCの使い方を書いときます.
アスペクトの定義(aspect.acc)はこんな感じ.
アスペクトは処理を織り込むポイントカットと処理を記述するアドバイスからなる.

aspect.c
#include <stdio.h>
before() : execution( int main(void) ) {
    printf("called the advice before main func\n");
}
main.c
#include <stdio.h>
int main() {
    printf("in main func\n");
}
  1. アスペクトファイルとCファイルのプリプロセッサを展開.
  2. 展開したファイルをACCに入力
  3. 出力されたファイルをGCCでコンパイル

1.1. gcc -E aspect.c > Aaspect.acc
1.2 gcc -E main.c > Amain.mc
2. acc Aaspect.acc Amain.mc
3. gcc Aaspect.c Amain.c

こんな感じで実行ファイルが生成される.
アスペクトをACCでトランスレートすると,アドバイス部をinline関数として定義し,対象のCソースコード内で呼び出すコードを生成する.

1
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
1
0