エンジニア

LLVMのattributeを使用して、コンパイル時に警告及びエラー表示してみる

投稿日:2013年9月10日 更新日:

今回エンジニアブログを担当する戸田です。
今回は「LLVMの属性機能」について書いて行きたいと思います。

チームでアプリ開発を行っていると仕様変更や不具合修正により、ソースコードの可読性や保守性が低下します。そのため、定期的なリファクタリングが必要になってきます。そんな時に、「LLVMの属性機能」を使用することで効率よくリファクタリングが行うことが出来ます。

それでは、以下の機能を紹介していきます。

  • deprecated属性
  • unavailable属性

まずは、「deprecated属性」について紹介していきます。

deprecated属性は、コンパイル時にクラスや関数を推奨されないクラスや関数として、警告表示してくれます。直ぐにコードを削除できない状況下で、今後使用されたくない場合に使用することが出来ます。

SampleMessageを推奨されないクラスにする場合は、以下の通りになります。

class SampleMessage
{
public:
    void show();
}__attribute__((deprecated()));

show()を推奨されない関数にする場合は、以下の通りになります。

class SampleMessage 
{
public:
    void show() __attribute__((deprecated()));
};

また、コメントを追加したい場合は、以下の通りになります。

class SampleMessage 
{
public:
    void show() __attribute__((deprecated("コメント")));
};

次に、「unavailable属性」について紹介していきます。

unavailable属性は、コンパイル時にクラスや関数を利用できないクラスや関数として、エラー表示してくれます。

SampleMessageを利用できないクラスにする場合は、以下の通りになります。

class SampleMessage
{
public:
    void show();
}__attribute__((unavailable()));

show()を利用できない関数にする場合は、以下の通りになります。

class SampleMessage 
{
public:
    void show() __attribute__((unavailable()));
};

また、コメントを追加したい場合は、deprecated属性と同じように以下の通りになります。

class SampleMessage 
{
public:
    void show() __attribute__((unavailable("コメント")));
};

いかがでした。普段使うことが少ない機能ですが、機会がありましたら使用してみてください。

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-

© WonderPlanet Inc.