хочется чтобы лента плавно изменяла яркость
void set_pwm_smooth(int new_pwm)
{
static const int pwm_step = ...; // шаг изменения ШИМ
static const int pwm_step_time = ...; // время одного шага изменения ШИМ
static int old_pwm;
int pwm = old_pwm;
while (pwm != new_pwm) {
int next_pwm = pwm + (pwm < new_pwm ? pwm_step : -pwm_step);
if ((pwm < new_pwm && next_pwm > new_pwm) ||
(pwm > new_pwm && next_pwm < new_pwm))
pwm = new_pwm;
else
pwm = next_pwm;
analogWrite(LEDPIN, pwm);
delay(pwm_step_time);
}
old_pwm = new_pwm;
} windres lib/glut/glut.rc lib/glut/resources.o : Invalid argumentresources.o
в чем может быть дело
windres lib\glut\glut.rc lib\glut\resources.oПодскажите пожалуйста, почему так
a b c символы, которые нужны библиотеке b будут искаться только в библиотеке c, но не в a. Если между библиотеками нет циклических зависимостей (т.е. нет такого, что a определяет символ, нужный b, а b определяет символ, нужный a), то их можно упорядочить так, что линковка будет успешной (см. топологическая сортировка). Если циклические зависимости есть, или сортировать лень, можно перечислить нужные библиотеки несколько раз или взять их в группу:g++ main.cpp -Wl,--start-group -lglfw3 -lgdi32 -lopengl32 -lglew32s -Wl,--end-group sum_of = sum(matrix[][]);
sum_of = sum(n, matrix);int sum (int n, int matrix[n][n]) { int sum = 0; for (int j = 0; j < n; ++j){ for (int i = 0; i < n; ++i){ if (j == i){ sum += matrix[j][i]; } } } return sum; }
int sum (int n, int matrix[n][n])
{
int sum = 0;
for (int i = 0; i < n; ++i) {
sum += matrix[i][i];
}
return sum;
} пишу ключ -static
'-static'
On systems that support dynamic linking, this prevents linking with
the shared libraries. On other systems, this option has no effect.
линковать с ключем -dynamic.
Если выполнить так, то работает, но вручную прописывать не подходит:
#!/bin/bash
z1=({0..3}); z2=({4..7}) #...
for((i = 1; i < 3; ++i)); do
declare -n a=z$i
FILES=()
for n in ${a[@]}; do
FILES[${#FILES[@]}]="/untitled/a/$i/$n.jpg"
done
montage -monitor "${FILES[@]}" -geometry +0+0 -tile 4x1 /untitled/b/$i.jpg
done замена внутри файла
#! /bin/bash
subst()
{
eval "cat <<EOF
`cat \"$1\"`
EOF"
}
. ./config
subst ./dhcpd.conf.in > ./dhcpd.confddns-update-style interim;
ignore client-updates;
subnet ${NET}.0 netmask 255.255.255.0 {
option routers ${NET}.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.248.21;
option root-path "${NET}.1:/tftpboot/tensilica/rootfs/${ROOTFS}${NFS_MOUNT_OPTIONS}";
range dynamic-bootp ${NET}.128 ${NET}.128;
default-lease-time 21600;
max-lease-time 43200;
}NET=192.168.135
ROOTFS=cp0_latest
NFS_MOUNT_OPTIONS=${NFS_MOUNT_OPTIONS},noac
IF_CONFIG="$NET.1 up"
CONFIG=debug-kc705-cp0_latest
KERNEL_IMAGE=uImageСтоит ли сокращать код? И как?
struct
{
bool btn_state;
bool btn_flag;
bool hold_flag;
bool counter_flag;
bool isHolded_f;
bool isRelease_f;
bool isPress_f;
bool step_flag;
bool oneClick_f;
bool isOne_f;
} fl;
fl flags;
// ........
boolean GButton::isFlag(bool& flag) {
if (_tickMode) GButton::tick();
if (flag) {
flag = false;
return true;
} else return false;
}
boolean GButton::isPress() {
return isFlag(flags.isPress_f);
}
boolean GButton::isRelease() {
return isFlag(flags.isRelease_f);
}
boolean GButton::isClick() {
return isFlag(flags.isOne_f);
}
boolean GButton::isHolded() {
return isFlag(flags.isHolded_f);
} switch(1){ case 1: double d = 1; //ошибка }
Почему нельзя инициализировать в case?
It is possible to transfer into a block, but not in a way that bypasses declarations
with initialization. A program that jumps from a point where a local variable with
automatic storage duration is not in scope to a point where it is in scope is ill-formed
unless the variable has POD type (3.9) and is declared without an initializer. Как объявить их так, чтобы избежать подобных ошибок?
class someClass {
public:
void someClassTool();
int variableInClass = 5;
};
Someclass someclass;
void someUniversalTool()
{
int variable1 = someClass.variableInClass ;
//some additional code
}
void SomeClass::someClassTool()
{
someUniversalTool();
//some additional code
} double * func(double *p, int a, int b) { double **p1 = &p; *(int*)p = a; *(int*)p++ = b; return *p1; }
void func(double *p, int a, int b)
{
*(int*)p = a;
*((int*)p + 1) = b;
}void func(double *p, int a, int b)
{
memcpy(p, &a, 4);
memcpy((char *)p + 4, b, 4);
} float del (float a, float b)
{
float res;
...
res = ...;
....
return res;
}
....
float result = del (num1, num2);что делает "return res" во втором куске кода? То есть в переменную res записывается деление числа А и Б. А потом оно куда-то там возвращается..
1. Как влияет полином на CRC?
2. Существует ли возможность скорректировать алгоритм или полином так что бы результаты crc были определенном диапазоне? например от 0x0 - 0xafffffff.
3. Скорректируйте алгоритм так что бы результаты были всегда внутри диапазона 0x0-0xeffffffff
Подскажите как можно реализовать программно текстовый протокол SCPI?
Есть синонимы команд, есть не обязательные параметры, параметры могут быть, могут не быть, может быть сразу несколько. Как это всё обрабатывать и проверять не пытается ли пользовать ввести несуществующую команду?
gdb выдает следующее
char* command; while(strcmp(command, "exit") == 1);