LoginSignup
0
2

More than 5 years have passed since last update.

C > [続き]define多重定義チェック > defined()が多い場合の対応検討 > 行連結 > #if (defined(DATA_001)+defined(DATA_002) \ +defined(DATA_003)+defined(DATA_004) \ +defined(DATA_005)) != 1 > 読みやすい書き方の別案を教えていただきました

Last updated at Posted at 2016-12-21
動作環境
C++ Builder XE4

http://qiita.com/7of9/items/8f9fab70fe556b5b6e5c
において @SaitoAtsushi さんにdefined()を使った多重定義チェック方法を教えていただいた。

その関連コードで#define定義が増えて、現在defined()の行は「437桁」の定義になってしまっている。
エディタで「読みにくい」。

ソースコードの可読性の改善方法として行連結を試した。
参考 http://www.tamasoft.co.jp/lc/hlp/F024.html

以下はサンプル
http://ideone.com/HjwzuD

#include <stdio.h>

#define DATA_001 
#define DATA_002
#define DATA_003
#define DATA_004
#define DATA_005

#if (defined(DATA_001)+defined(DATA_002) \
    +defined(DATA_003)+defined(DATA_004) \
    +defined(DATA_005)) != 1
#error "Wrong number of selected cases"
#endif

int main(void) {
    // your code goes here
    return 0;
}

適当な項目数で行連結で分けるあたりが手ではありそう。

一方で#defineで多くのデータセット(現在15データセット)を切り替える、ということ自体が間違いの元かもしれない。

教えていただいた事項

(追記 2017/04/28)

@SaitoAtsushi さんのコメントにて読みやすいコードの書き方を教えていただきました。

使いたくなったので、

0
2
3

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