LINUX.ORG.RU

Сообщения normann

 

Кто знает способ определить тип данных в условиях директив препроцессора?

Форум — Development

Допустим есть тип определенный оператором typedef, определение может быть разным. Есть ли способ в условиях директив препроцессора (#if/#ifdef и т.п.) определить что за тип стоит в определении, а точнее его размер?

p.s. c99.

 , ,

normann
()

Чем прочитать текст в UTF-32?

Форум — General

Пишу программу, она делает лог в файл, лог идет в юникоде (UCS4/wchar_t), а потом выясняется что я этот текст ничем прочитать не могу.

 ,

normann
()

Где узнать «system clock granularity»?

Форум — Development

В man 2 select о таймауте написано:

The timeout argument specifies the minimum interval that select() should block waiting for a file descriptor to become ready. (This interval will be rounded up to the system clock granularity, and kernel scheduling delays mean that the blocking interval may overrun by a small amount.)

Где можно узнать этот granularity?

 

normann
()

ld: multiple definition of ... Я не могу больше.

Форум — Development

Я не понимаю что происходит, кажется у меня уже едет крыша, с прошлой недели бьюсь над тем что бы осознать в чем проблема. Линковщик (ld) ругается на две функции в проекте. пишет:

/tmp/ccZThUym.o: In function `load_reg_file':
registers.c:(.text+0x0): multiple definition of `load_reg_file'
/tmp/ccqNKejG.o:regfileio.c:(.text+0x0): first defined here
...
collect2: error: ld returned 1 exit status
О второй функции пишет тоже самое. Во всем проекте функция с именем load_reg_file определена (и объявлена) всего один раз, ничего к ней не обращается (все закомментировал), никаких ссылок. Когда вставляю функцию в другой проект, все прекрасно собирается (как и раньше когда-то собиралось). Я не понимаю логики линковщика т.к. сначала я попробовал закомментировать всю функцию и сделать рефакторинг. На новую функцию линковщик ругается так же точно, удалил тело функции, всё равно, переименовал функцию, все равно. Что происходит, не понимаю, может нечистая сила, а может у меня крыша поехала. Не знаю в каком направлении уже искать. И показать то нечего, весь проект не покажешь, а саму функцию показывать смысла нет. Но может кто из опытных подскажет куда лезть и что проверять?

Версии опробованных ld: 2.22 и 2.23.2

 ,

normann
()

multiple definition of `...'

Форум — Development

Не могу собрать проект с inline подстановками. Вот например:

head.h:

#include <ctype.h>

inline char* strbegin(char* s)
{
    while( isblank(*s) ) ++s;
    return s;
}

proc.c:

#include "head.h"

main.c:

#include "head.h"

int main(int argc, char* argv[])
{
    return 0;
}

$gcc main.c proc.c

Линковщик сообщает что:

/tmp/ccQRGJfn.o: In function `strbegin':
proc.c:(.text+0x0): multiple definition of `strbegin'
/tmp/ccKc1R22.o:main.c:(.text+0x0): first defined here
collect2: ошибка: выполнение ld завершилось с кодом возврата 1

ЧЯДНТ?

 ,

normann
()

Запутался в директивах препроцессора C

Форум — Development

Пытаюсь перед определением макро, если макро с таким именем уже есть, сохранить старое значение, потом назначить новое значение, а после использования макро вернуть старое значение этому имени.

Например:

#define NUM 8

#ifdef NUM
# define pre_NUM NUM
# undef NUM
#endif

#define NUM 4
    
    //Использую NUM

#undef NUM
#if defined pre_NUM
# define NUM pre_NUM
# undef pre_NUM
#endif
После этого кода когда пытаюсь использовать NUM препроцессор вставляет pre_NUM вместо 8. Существует ли способ вернуть имени NUM восьмерку?

 

normann
()

Может ли синхронный/блокирующий read() последовательного порта в какой нибудь ситуации вернуть 0?

Форум — Development

Последовательный порт открыт в raw режиме, а в man 2 read написано что «zero indicates end of file», а прерывание из-за полученного сигнала возвращает -1. Стоит ли делать лишнюю (или не лишнюю) проверку на 0?


P.S. man:

RETURN VALUE

On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number. It is not an error if this number is smaller than the number of bytes requested; this may happen for example because fewer bytes are actually available right now (maybe because we were close to end-of-file, or because we are reading from a pipe, or from a terminal), or because read() was interrupted by a signal. On error, -1 is returned, and errno is set appropriately. In this case it is left unspecified whether the file position (if any) changes.

 , ,

normann
()

Как сбросить входящий через tty пакет на середине чтения?

Форум — Development

Во время чтения из tty (побайтово) входящего пакета обнаруживается что пакет содержит ошибку или еще какую нибудь лабуду. Как сбросить/отменить оставшееся непрочитанное содержимое пакета (очистить входящий буфер или что-то вроде того) для отправки исходящего пакета или для дальнейшего прослушивания порта на предмет следующего входящего (пакета) запроса?

В моем случае пакеты ModBus.

 , ,

normann
()

Кто знает где взять полное описание протокола ModBus RTU?

Форум — Development

Желательно, конечно, на русском, но на английском тоже сойдет если нет первого.

Перемещено Pinkbyte из linux-org-ru

 

normann
()

Помогите определиться с термином терминал (TTY)

Форум — General

Как правильно в UNIX-среде именовать (в речи) последовательный порт? В некоторых источниках его называют терминалом, на сколько это правильно?

 , ,

normann
()

Зачем в memset второй аргумент имеет тип int?

Форум — Development
void *memset(void *s, int c, size_t n);

Почему не char, заполняется все равно одним байтом?

 ,

normann
()

Как в интерпертаторе dosbox получить значение переменной окружения?

Форум — General

Как в командном интерпретаторе dosbox получить значение переменной окружения? %переменная% почему-то не работает.

 

normann
()

Как получить путь к точке монтирования devtmpfs (/dev)?

Форум — Development

Как получить путь к точке монтирования devtmpfs (/dev) без нарушения совместимости с POSIX, где об этом могу прочитать?

 ,

normann
()

Как получить размер поля структуры в си?

Форум — Development

Скажем есть структура:

struct st {
	long fld1;
}
Надо получить размер (sizeof) поля fld1.

 

normann
()

Какими вариантами можно документировать обособленную группу нескольких макро-констант?

Форум — Development

У меня в файле группа макро-констант (Си) с общим для группы назначением. Я могу как нибудь отделить документацию для этой группы от остальных макро-определений этого файла? На пример общий заголовок для всей группы, а дальше описание для каждой константы отдельно.

 ,

normann
()

Предписан ли стандартом в Си размер смещения void*?

Форум — Development

Например uint32_t* при единичном смещении каждый раз смещается на 4, uint16_t* на 2, и т.п. Мой компилятор показывает 1, но будет ли так всегда?

 

normann
()

favicon для документации в html (Doxygen)

Форум — Development

Можно ли Doxygen-у указывать favicon для документации в формате html?

 

normann
()

Всегда ли sizeof(void*) == 8 означает 64 разрядную машину?

Форум — Development

Всегда ли sizeof(void*) == 8 означает 64 разрядную машину?

 ,

normann
()

Разве в Си нельзя задать в качестве возвращаемого из функции типа перечисление?

Форум — Development

М?

 

normann
()

Как установить разные значки на разные рабочие столы KDE4

Форум — Desktop

Хочу что бы на разных рабочих столах помимо содержимого папки desktop можно было увидеть/выполнить приложение/команду индивидуальную для данного рабочего стола.

 ,

normann
()

RSS подписка на новые темы