Mam następujący zdefiniować w kodzieJak # zdefiniować ciąg znaków bez znaku *?
#define PRODUCTNAME "SomeName"
i chcę, aby wysłać go z funkcji com_reply(unsigned char* msg, uint16_t lenght)
.
Teraz dostaję ostrzeżenie, że mój argument różni się sygnatariuszem. Wiem w czym jest problem, a także dlaczego com_reply
wykorzystuje unsigned char*
zamiast char*
, po prostu chcę wiedzieć:
Jak mogę określić mój ciąg jako unsigned char*
więc można go używać w całym moim programie bez uzyskiwania ostrzeżeń wszędzie .
EDIT:
Ściśle mówiąc mam więcej niż jeden określa tutaj, a głównym powodem jest to, że istnieje BANNER
określić, które składa się z kilku innych określi, tak:
#define PRODUCTNAME "SomeName"
#define PRODUCTDATE "2013-03-30"
#define BANNER PRODUCTNAME " (" PRODUCTDATE ")"
należy utworzyć ustawiaj zmienne const i łącz je podczas startu programu, zamiast używać tutaj definiujących?
Dlaczego nie 'const char * PRODUCTNAME = "somename"' lub podobne? (niezwiązane, ale #define ma wiele wad.) –
Nie wiem jak to jest zgodne z normami, ale co z: '(const unsigned char *)" SomeName "' – Mysticial
Z ciekawości, co robi 'com_reply' funkcja? Wydaje się, że jest to coś, co nie powinno w rzeczywistości przyjmować ciągu, ale raczej wskaźnik do liczby od 0 do 255. – austin