マクロをこのように使用できるかどうかはわかりません。文字列を使用してマクロ定義を確認する
私の組み込みシステムのプロジェクトでは、私が持っている2つの文字列に応じてマクロが定義されているかどうかを知りたいと思います。例えばのために
:今
#define FAN_1 PORTAbits.RA0
#define LIGHT_1 PORTAbits.RA1
、私はの形で要求を取得する:私は、直接私のファン1であることを、ピンをチェックしたいと思いますこれら二つの引数を使用して
char *arg1="FAN"; ("LIGHT")
char *arg2="1";
接続して状態を確認してください。
strcmp()または直接マッチングを使用してarg1とarg2をチェックする必要がないようにしたいです。 そして私は直接if(some_macro(arg1,arg2)==1){} else {}
と書くことができます。
ピンがこのようにしか定義できないため、マクロを使用してこれが可能かどうかをご案内します。
また、そうでない場合は、これを行う他の方法はありますか?
これは疑いマイクロチップのPICコードのように見えます。 MPLAB Cコンパイラとライブラリを使用している場合は、RAMとROMの文字列の違いに注意してください。関数に渡される文字列定数は、 'char *'ではなく 'char rom * 'になります。各タイプの文字列比較のためのライブラリには特別な関数があります。たとえば、 'strcmppgm2ram(arg1、" FAN ")'は、arg1を文字列リテラルと比較するのに適しています。私は他のCコンパイラがどのように奇妙なメモリ構造を扱っているのかよく分かりません。 –