通ってください。
#define _VERSION_ 1.4
#define DEFAULT_NETWORK_TOKEN_KEY { 3, 6, 5, 100}
// 上記のマクロは変更できませんが、以下のマクロは変更できません
#define STR_VALUE(arg) #arg
#define FUNCTION_NAME(name) STR_VALUE(name\r)
#define TEST_FUNC #AP started v _VERSION_
#define TEST_FUNC_NAME FUNCTION_NAME(TEST_FUNC)
#define QUOTE_X(t)#t
#define QUOTE(t)QUOTE_X(t)
#define ABC 100 //{ 3, 6, 5, 100}
#define MYSTR "The value of ABC is"
const uint8 startMsg[] = MYSTR " " QUOTE(ABC);
結果: ABC の値は 100 です
const uint8 startMsg[] = TEST_FUNC_NAME;
results: #AP started v 1.4 (Carriage return) // v と 1.4 の間のスペースも削除したい
私が欲しい
const uint8 startMsg[] = ?? ;
#AP started [3.6.5.100] v1.4 (キャリッジ リターン) または#AP started [3,6,5,100] v1.4 (キャリッジ リターン) などの結果が 必要です。
私は SOC チップに取り組んでおり、スタートアップでこれを示す必要があります。急。:)
------ 質問の答えは ------
#define NETTOKENKEY(a,b,c,d) "[" #a "." #b "." #c "." #d "]"
#define GENNETTOKENKEY(z) NETTOKENKEY(z)
#define STRINGIZER(arg) #arg
#define STR_VALUE(arg) STRINGIZER(arg)
#define AP_VERSION_STR "#AP started v" STR_VALUE(_VERSION_)
#define AP_NETVERSION_STR "#AP started " \
GENNETTOKENKEY(DEFAULT_NETWORK_TOKEN_KEY_VALUES) \
" v" STR_VALUE(_VERSION_) **"\r"**
const uint8 startMsg[] = AP_NETVERSION_STR ;