Подскажите пожалуйста, какую функцию здесь выполняет строка return ((bitset.intRepresent & (bitset.intRepresent-1)) == 0); // denormalized number - как она проверяет число на денормализованое значение?
#include <stdint.h>
#include <string.h>
int isPowOf2(double number)
{
uint64_t v;
uint64_t m;
memcpy(&v, &number, sizeof(v));
m = v & ((UINT64_C(1) << 52) - 1); // m holds the mantissa bits
switch ((v >> 52) & 0x7ff) { // check the exponent bits
case 0: // 0 or denormal
if (m == 0) // 0 is represented by exponent and mantissa both 0
return 0; // 0 is not a power of 2
else // denormal number has all its bits in the mantissa
return m & (m - 1) == 0; // a power of 2 has exactly one 1 bit in m
case 0x7ff: // infinity or NaN
return 0; // neither is a power of 2
default: // ordinary number always has leading 1 which is not recorded in the mantissa
return m == 0; // a power of 2 has exactly one 1 bit and we know that it's not in m
}
}
memset(arrayC, '-', sizeof arrayC);
if( x == arrayI[i][j])
Как присвоить элементу любому этой матрицы любой символ?
arrayC[i][j] = 'W';
Как мне избавится от дублирования кода, который одинаковый для нескольких целей, однако, отличается именами файлов(пусть имена файлов совпадают с названием целей)?
define generate-targets
$(1):
make -j5 TARGET=unwired BOARD=$$(BOARD)/$$(CPU) -f makefiles/Makefile.$$@
../bootloader/generate-metadata/generate-metadata $$@.bin 0x0 0x01A00001 1
srec_cat firmware-metadata.bin -binary $$@.bin -binary -offset 0x100 -o $$@-ota-image.bin -binary
rm $$@.hex
$(1)-fb: $(1)-CLEAN
../../tools/backdoor-bootloader.py -e -w -v $(1)-firmware.hex
$(1)-f: $(1)-CLEAN
/Applications/ti/Uniflash/flash_cc1310.sh $(1)-firmware.hex
$(1)-ota: $(1)
scp $(1)-ota-image.bin root@192.168.20.187:/root/unwired_smarthome
endef
$(eval $(call generate-targets,ubrige))
Как правильно собирать такое
apt-get install libfcgi-dev
gcc -o main main.c -lfcgi -pthread
gcc -I /home/user/lessons/tests/include -L/home/user/lessons/tests/lib -o main main.cpp -ldl -lfcgi -lpthread
-lpthread
P.S. выделение памяти в прерываниях зло и т.д. ага.
Так вот, что бы не проставлять кучу __disable_irq(); __enable_irq();
Но не дает задавать так размеры ("m и n должны иметь константное значение). Как тогда это можно сделать?
Мне не нужен полный список низкоуровневых оптимизаций, таких как размещение переменных в регистры, а нужны такие, как вычисление константных выражений или раскрытие простых методов (get/set). Какие оптимизации в C и C++ различаются? В частности, рассматриваю gcc.
gcc -Q --help=optimizers
выведет список всех включенных в настоящий момент (другими опциями командной строки) оптимизаций. Что каждый из -f* ключей означает можно посмотреть тут: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Option... sscanf(mycharp, "%[^'*']*,%[','^]", o, s);
%[^'*']
остановится на входном символе *, и так там и останется, потому что последующая часть форматной строки не поглощает этот символ.sscanf(mycharp, "%[^*]*,%[,^]", o, s);
потому что он не может различить функции sin(),sqrt() и т.д даже с подключенной библиотекой math.h
int main (int argc, char * const argv[], char * const argp[])
{
setlocale(LC_ALL, "");
...
}
uint_fast64_t number = 184467440737095511615;
Даже присваиваться не хочет, как такое выводить тоже не понятно.
printf("%"PRIuFAST64"\n", number);