Często mam sytuację, w której potrzebuję kilku stałych generowanych podczas kompilacji w celu użycia operacji przesunięcia bitowego i maskowania.Operacje matematyczne podczas wstępnego przetwarzania kompilatora
np.
#define blockbits 8
#define blocksize 256 // could be generated from 2^blockbits
#define blocksize 0xFF // could be generated from blocksize - 1
Chciałbym to wszystko być generowane z blockbits
jednak istnieje żadna operacja moc, która może być używana w preprocesor, że jestem świadomy.
Czy ktoś wie prosty sposób generowania tego rodzaju rzeczy w czasie kompilacji?
"jednak nie ma operacji zasilania, którą można użyć w preprocesorze, którego jestem świadomy." - naprawdę? co z przesunięciem bitowym? –
BTW to mówimy w C++, jakikolwiek dobry powód dla '# define' zamiast stałych? – Kos
Czy to nie jest praca dla 'constexpr'? – DavidO