ファームウェアプロトタイプ用の再利用可能なロギングモジュールを作成しています。ラッパー関数を持つロガーAPIを持っていますvoid LogWithNum(eLogSubSystem sys, eLogLevel level, char * msg, int * number)
ジェネリックロガー関数のchar *の長さを調べる方法は?
このラッパー関数では、システム固有の書き込み関数が呼び出されます。たとえば、UARTやディスプレイドライバ...
システムのすべての書き込み/送信機能は、何らかの形でメッセージの長さを必要とします。そして、私のラッパー関数は、送るべきメッセージにchar *だけを与えます。私のラッパーはシステムUART送信関数を呼び出す場合には、例えばここを参照してください:
void LogWithNum(eLogSubSystem sys, eLogLevel level, char * msg, int * number)
{
UARTDRV_Transmit(handle, char * msg, int msglen);
}
私は基本的な送信機能に適切にそれを渡すことができますので、私は、任意のメッセージの長さを引き出すことができますどのように?
私はuC上にあり、スペースを節約したいので、大きなライブラリを使いたくないです。あなたの問題を解決するため
'msg'にASCII文字だけが含まれていると、おそらく' strlen() 'ですか? –
'strlen()'を使うことはできませんか、単に 'char *'をインクリメントする単純なループと 'NUL'を満たすまでカウンタを書くことはできませんか? –
明確ではありません:あなたの例は 'msg'ではなく' number'を送信しています – LPs