Szukam sposobu na przekazanie do funkcji tablicy uint32_t
, ale wstukanej "z ręki".
Coś takiego:
void Test(const uint32_t* Tablica)
{
}
Sęk w tym, że taka funkcja nie przyjmie takiego parametru:
Test({0xAABBCCDD, 0xBBCCAAEE})
Natomiast coś takiego już pójdzie, ale w sposób pośredni, a to mi nie wystarczy:
const uint32_t Array[] = {0xAABBCCDD, 0xBBCCAAEE};
Test(Array);
Póki co udało mi się wykombinować tyle, żeby jako parametr podawać const stringa w formie znaków unicode. Niestety nie ma znaków dla pełnego zakresu 32 bitowego inta, więc zamiast tego muszę się posługiwać char'em
, który na szczęście ma odpowiednie znaki unicode w pełnym zakresie 0-255:
//To nie działa:
void Test(const char32_t* Tablica)
{
}
Test("\UAABBCCDD\UBBCCAAEE"); //Error, nie ma takich znaków unicode
//Ale to tak:
void Test(const char* Tablica)
{
}
Test("\xAA\xBB\xCC\xDD\xBB\xCC\xAA\xEE"); //OK
Wiem, że mógłbym to zrobić na 10 innych sposobów, np. podając kolejne wartości w formie initializer_list
, ale wtedy całość nie będzie miała postaci ciągłej tablicy bajtów (na tym mi zależy) i będzie wymagała wstępnej obróbki do takiej postaci.
Jakieś pomysły?