読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

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

今回エンジニアブログを担当する戸田です。
今回は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("コメント")));  
};

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