defineとconstの使い分け
便利な#defineですが、defineを使わないほうがいいこともあるかもしれません。
例えば
#define A_STR "abcde"
とすると、A_STRを記述したすべての部分で別々の文字列として
定義されるため、コード量が増えるような気がします、なんとなく。
ここは
const char * A_STR = "abcde";
としたほうがプログラムメモリの節約になりそうな気がします。
が、実際には同じ文字列の場合だと、コンパイラが気をつかってくれて
増えないようです。(XC8 1.44)
逆に
const char A = 5;
とすると、プログラムメモリにAという領域が設定されてしまいます。
アクセスも遅くなるし、プログラムエリアも無駄になります。
これに関しては
#define A 5
のほうがいいことになります。これは(XC8 1.44)でも正しいです。
単なる定数にconstは避けるべき。