как мне преобразовать на си число(дробное. целое) в внутренний формат(спт/сфт)
float x = 76.625;
uint32_t fix = (int32_t)(x * (1 << 16));
printf("%f\n", (float)fix / (1 << 16));
Вопрос первый: я правильно понимаю, что эту структуру данных где будут хранится мои слова можно назвать хэш таблицей, а функцию, определяющую к какой ячейке массива отнести очередное слово - хэш-функцией?
По крупицам собираю информацию в гугле относительно динамических списков и массивов структур, но картина пока не складывается :(
Подскажите как это реализовать и\или где можно почитать о создании таких вот вещей?
Как заставить iconv работать?
printf("result: '%s'\n", converted_start);
в converted_start -- utf8...fprintf(stdout, "debug: event = RUNE, data = %c\n", iso);
iso -- это во-первых массив, а во-вторых, массив символов CP866.void parse_callback( struct parser_event *pe, void *userdata )
{
switch ( pe->event ) {
case EVENT_RUNE: {
char *iso = &pe->rune;
char out[10] = {0};
char *converted = out;
size_t ibl = 1;
size_t obl = sizeof(out);
iconv_t foo = iconv_open("CP866", "UTF-8");
int ret;
if((int) foo == -1) {
if (errno == EINVAL) {
fprintf(stderr,
"Conversion is not supported");
} else {
fprintf(stderr, "Initialization failure:\n");
}
break;
}
ret = iconv(foo, &iso, &ibl, &converted, &obl);
// if iconv fails it returns -1
if(ret == (iconv_t)-1) {
perror("iconv");
} else {
// otherwise the number of converted bytes
printf("%i bytes converted\n", ret);
printf("result: '%s'\n", out);
}
iconv_close(foo);
fprintf(stdout, "debug: event = RUNE, data = %c\n", pe->rune);
break;
}
case EVENT_FONT:
fprintf( stderr, "FUCK FONT\n");
fprintf( stdout, "debug: event = FONT, data = %d\n", pe->font_id );
break;
case EVENT_ERROR:
fprintf( stderr, "FUCK ERROR\n");
fprintf( stdout, "debug: event = ERROR\n" );
break;
default:
fprintf( stdout, "debug: event = UNKNOWN\n" );
}
}
Подскажите пожалуйста, какую функцию здесь выполняет строка 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