gdb pode usar display
para imprimir uma expressão em cada etapa. Quero formatar a expressão usando gdb's printf
. Como posso dizer ao gdb para executar printf
cada etapa, semelhante ao display?
SRobertJames's questions
Qual é a maneira correta de multiplicar e dividir ints em C para evitar estouro? Quero determinar quanto tempo ticks
um temporizador rodando em freq
(em Hz) levará para fazer a delay
(em ms). Isso deveria ser ticks = freq * delay / 1000
.
Mas, essa linha parece perigosa para mim. Se escrevermos (freq * delay) / 1000
corremos o risco de transbordar. Se, em vez disso, escrevermos freq * (delay / 1000)
, entraremos em carros alegóricos - que são desnecessários e propensos a erros, especialmente. em um microcontrolador.
Qual é a maneira correta de fazer isso?
Em C, sabe-se que #define
as macros devem usar parênteses. Veja, por exemplo , macros C e uso de argumentos entre parênteses .
No entanto, em código incorporado, frequentemente vejo isso sendo usado mesmo com inteiros . Por exemplo:
#define OFFSET (0x100)
Qual é o sentido dos parênteses quando a macro é simplesmente um número inteiro constante? Em que caso eles poderiam fazer a diferença?