Код: Выделить всё
int endPosition;
if(GetPosition() == 50) endPosition = TRUE;
else endPosition = FALSE;
Код: Выделить всё
int endPosition;
if(GetPosition() == 50) endPosition = TRUE;
else endPosition = FALSE;
Код: Выделить всё
bool a;
printf("%d", ++a);Никто ничего вам не доказывал. До вас пытаются донести, что в программировании как и в сексе результат зависит от усилий двоих, в данном случае от компилятора и линковщика.ARV писал(а):а давеча мне доказали
Пихают бездумно молодые и глупые, а линковщик размещает в памяти объекты данных, созданные компилятором, с указаниями, написанными в его скрипте. Если для сегмента включено выравнивание на 4 байта и ваш массив на 10 байт единственный объект, размещаемый в этом сегменте, то размер сегмента будет 12 байт. Если же будут ещё данные, то они будут размещаться за этим массивом без зазоров, но итоговый размер сегмента будет выровнен до int32. Если вы включите выравнивание сегмента на 40 байт, то полезными в нём будут только первые 10 байт, а 30 байт просто не будут использоваться.ARV писал(а):всё зависит от того, как линкер всё распихает...
Код: Выделить всё
#define is_bool(x) _Generic((typeof(x)){0}, bool: 1, default: 0)
bool a;
static_assert(is_bool(a));Код: Выделить всё
#include <stdbool.h>
void send_int(int val) { /* реализация для int */ }
void send_float(float val) { /* реализация для float */ }
void send_bool(bool val) { /* реализация для bool */ }
#define usb_send(x) _Generic((x), \
int: send_int, \
float: send_float, \
bool: send_bool, \
default: send_int \
)(x)
int the_send() {
int a = 10;
float b = 3.14f;
bool c = true;
usb_send(a); // Вызовет send_int
usb_send(b); // Вызовет send_float
usb_send(c); // Вызовет send_bool
return 0;
}предложите вариант без макросов.через макросы чтоль
Код: Выделить всё
PA0 TIM2_CH1:1 TIM5_CH1:2 TIM8_ETR:3 TIM15_BKIN:4 SPI6_NSS:5 SPI3_RDY:6 USART2_CTS/USART2_NSS:7 UART4_TX:8 SAI2_SD_B:A ETH_CRS:B TIM2_ETR:E EVENTOUT:F
PA1 TIM2_CH2:1 TIM5_CH2:2 TIM15_CH1N:4 LPTIM1_IN1:5 OCTOSPI1_DQS:6 USART2_DE/USART2_RTS:7 UART4_RX:8 OCTOSPI1_IO3:9 SAI2_MCLK_B:A ETH_REF_CLK/ETH_RX_CLK:B EVENTOUT:F
PA2 TIM2_CH3:1 TIM5_CH3:2 TIM15_CH1:4 LPTIM1_IN2:5 USART2_TX:7 SAI2_SCK_B:8 ETH_MDIO:B EVENTOUT:F
PA3 TIM2_CH4:1 TIM5_CH4:2 OCTOSPI1_CLK:3 TIM15_CH2:4 I2S2_WS/SPI2_NSS:5 SAI1_SD_B:6 USART2_RX:7 ETH_COL:B EVENTOUT:F
PA4 TIM5_ETR:2 LPTIM2_CH1:3 I2S1_WS/SPI1_NSS:5 I2S3_WS/SPI3_NSS:6 USART2_CK:7 SPI6_NSS:8 DCMI_HSYNC/PSSI_DE:D EVENTOUT:F
PA5 TIM2_CH1:1 TIM8_CH1N:3 I2S1_CK/SPI1_SCK:5 SPI6_SCK:8 ETH_TX_EN:B PSSI_D14:D TIM2_ETR:E EVENTOUT:F
PA6 TIM1_BKIN:1 TIM3_CH1:2 TIM8_BKIN:3 I2S1_SDI/SPI1_MISO:5 OCTOSPI1_IO3:6 USART11_TX:7 SPI6_MISO:8 TIM13_CH1:9 DCMI_PIXCLK/PSSI_PDCK:D EVENTOUT:F
PA7 TIM1_CH1N:1 TIM3_CH2:2 TIM8_CH1N:3 I2S1_SDO/SPI1_MOSI:5 USART11_RX:7 SPI6_MOSI:8 TIM14_CH1:9 OCTOSPI1_IO2:A ETH_CRS_DV/ETH_RX_DV:B FMC_SDNWE:C FMC_NWE:D EVENTOUT:F
PA8 RCC_MCO_1:0 TIM1_CH1:1 TIM8_BKIN2:3 I2C3_SCL:4 SPI1_RDY:5 USART1_CK:7 USB_SOF:A UART7_RX:B FMC_NOE:C DCMI_D3/PSSI_D3:D EVENTOUT:F
PA9 TIM1_CH2:1 LPUART1_TX:3 I2C3_SMBA:4 I2S2_CK/SPI2_SCK:5 USART1_TX:7 ETH_TX_ER:B FMC_NWE:C DCMI_D0/PSSI_D0:D EVENTOUT:F
PA10 TIM1_CH3:1 LPUART1_RX:3 LPTIM2_IN2:4 UCPD1_FRSTX:6 USART1_RX:7 FDCAN2_TX:9 SDMMC1_D0:C DCMI_D1/PSSI_D1:D EVENTOUT:F
PA11 TIM1_CH4:1 LPUART1_CTS:3 I2S2_WS/SPI2_NSS:5 UART4_RX:6 USART1_CTS/USART1_NSS:7 FDCAN1_RX:9 USB_DM:A EVENTOUT:F
PA12 TIM1_ETR:1 LPUART1_DE/LPUART1_RTS:3 I2S2_CK/SPI2_SCK:5 UART4_TX:6 USART1_DE/USART1_RTS:7 SAI2_FS_B:8 FDCAN1_TX:9 USB_DP:A EVENTOUT:F
PA13 JTMS/SWDIO:0 EVENTOUT:F
PA14 JTCK/SWCLK:0 EVENTOUT:F
PA15 JTDI:0 TIM2_CH1:1 LPTIM3_IN2:2 CEC:4 I2S1_WS/SPI1_NSS:5 I2S3_WS/SPI3_NSS:6 SPI6_NSS:7 UART4_DE/UART4_RTS:8 UART7_TX:B FMC_NBL1:C DCMI_D11/PSSI_D11:D TIM2_ETR:E EVENTOUT:F
PB0 TIM1_CH2N:1 TIM3_CH3:2 TIM8_CH2N:3 OCTOSPI1_IO1:6 USART11_CK:7 UART4_CTS:8 ETH_RXD2:B LPTIM3_CH1:E EVENTOUT:F
PB1 TIM1_CH3N:1 TIM3_CH4:2 TIM8_CH3N:3 OCTOSPI1_IO0:6 ETH_RXD3:B LPTIM3_CH2:E EVENTOUT:F
PB2 RTC_OUT2:0 SAI1_D1:2 TIM8_CH4N:3 SPI1_RDY:4 LPTIM1_CH1:5 SAI1_SD_A:6 I2S3_SDO/SPI3_MOSI:7 OCTOSPI1_CLK:9 OCTOSPI1_DQS:A SDMMC1_CMD:C LPTIM5_ETR:D EVENTOUT:F
PB3 JTDO/SWO:0 TIM2_CH2:1 I2C2_SDA:4 I2S1_CK/SPI1_SCK:5 I2S3_CK/SPI3_SCK:6 UART12_CTS:7 SPI6_SCK:8 CRS_SYNC:A UART7_RX:B LPTIM6_ETR:E EVENTOUT:F
PB4 NJTRST:0 TIM16_BKIN:1 TIM3_CH1:2 OCTOSPI1_CLK:3 LPTIM1_CH2:4 I2S1_SDI/SPI1_MISO:5 I2S3_SDI/SPI3_MISO:6 I2S2_WS/SPI2_NSS:7 SPI6_MISO:8 UART7_TX:B DCMI_D7/PSSI_D7:D EVENTOUT:F
PB5 TIM17_BKIN:1 TIM3_CH2:2 OCTOSPI1_NCLK:3 I2C1_SMBA:4 I2S1_SDO/SPI1_MOSI:5 I2C4_SMBA:6 I2S3_SDO/SPI3_MOSI:7 SPI6_MOSI:8 FDCAN2_RX:9 ETH_PPS_OUT:B FMC_SDCKE1:C DCMI_D10/PSSI_D10:D UART5_RX:E EVENTOUT:F
PB6 TIM16_CH1N:1 TIM4_CH1:2 I3C1_SCL:3 I2C1_SCL:4 CEC:5 I2C4_SCL:6 USART1_TX:7 LPUART1_TX:8 FDCAN2_TX:9 OCTOSPI1_NCS:A FMC_SDNE1:C DCMI_D5/PSSI_D5:D UART5_TX:E EVENTOUT:F
PB7 TIM17_CH1N:1 TIM4_CH2:2 I3C1_SDA:3 I2C1_SDA:4 I2C4_SDA:6 USART1_RX:7 LPUART1_RX:8 FDCAN1_TX:9 FMC_NL:C DCMI_VSYNC/PSSI_RDY:D EVENTOUT:F
PB8 TIM16_CH1:1 TIM4_CH3:2 I3C1_SCL:3 I2C1_SCL:4 SPI4_RDY:5 I2C4_SCL:6 SDMMC1_CKIN:7 UART4_RX:8 FDCAN1_RX:9 ETH_TXD3:B SDMMC1_D4:C DCMI_D6/PSSI_D6:D EVENTOUT:F
PB9 TIM17_CH1:1 TIM4_CH4:2 I3C1_SDA:3 I2C1_SDA:4 I2S2_WS/SPI2_NSS:5 I2C4_SDA:6 SDMMC1_CDIR:7 UART4_TX:8 FDCAN1_TX:9 SDMMC1_D5:C DCMI_D7/PSSI_D7:D EVENTOUT:F
PB10 TIM2_CH3:1 LPTIM3_CH1:2 LPTIM2_IN1:3 I2C2_SCL:4 I2S2_CK/SPI2_SCK:5 USART3_TX:7 OCTOSPI1_NCS:9 ETH_RX_ER:B EVENTOUT:F
PB12 TIM1_BKIN:1 OCTOSPI1_NCLK:3 I2C2_SDA:4 I2S2_WS/SPI2_NSS:5 UCPD1_FRSTX:6 USART3_CK:7 FDCAN2_RX:9 ETH_TXD0:B UART5_RX:E EVENTOUT:F
PB13 TIM1_CH1N:1 LPTIM3_IN1:2 LPTIM2_CH1:3 I2C2_SMBA:4 I2S2_CK/SPI2_SCK:5 USART3_CTS/USART3_NSS:7 FDCAN2_TX:9 SDMMC1_D0:C UART5_TX:E EVENTOUT:F
PB14 TIM1_CH2N:1 TIM12_CH1:2 TIM8_CH2N:3 USART1_TX:4 I2S2_SDI/SPI2_MISO:5 USART3_DE/USART3_RTS:7 UART4_DE/UART4_RTS:8 LPTIM3_ETR:E EVENTOUT:F
PB15 RTC_REFIN:0 TIM1_CH3N:1 TIM12_CH2:2 TIM8_CH3N:3 USART1_RX:4 I2S2_SDO/SPI2_MOSI:5 USART11_CTS/USART11_NSS:7 UART4_CTS:8 OCTOSPI1_CLK:A ETH_TXD1:B DCMI_D2/PSSI_D2:D UART5_RX:E EVENTOUT:F
PC0 TIM16_BKIN:1 SAI1_MCLK_A:6 SPI2_RDY:7 SAI2_FS_B:8 FMC_A25:9 OCTOSPI1_IO7:A FMC_SDNWE:C EVENTOUT:F
PC1 TRACED0:0 SAI1_D1:2 I2S2_SDO/SPI2_MOSI:5 SAI1_SD_A:6 USART11_DE/USART11_RTS:7 SAI2_SD_A:8 OCTOSPI1_IO4:A ETH_MDC:B EVENTOUT:F
PC2 PWR_CSLEEP:0 TIM17_CH1:1 TIM4_CH4:2 I2S2_SDI/SPI2_MISO:5 OCTOSPI1_IO5:6 OCTOSPI1_IO2:9 ETH_TXD2:B FMC_SDNE0:C EVENTOUT:F
PC3 PWR_CSTOP:0 SAI1_D3:2 LPTIM3_CH1:3 I2S2_SDO/SPI2_MOSI:5 OCTOSPI1_IO6:6 OCTOSPI1_IO0:9 ETH_TX_CLK:B FMC_SDCKE0:C EVENTOUT:F
PC4 TIM2_CH4:1 SAI1_CK1:2 LPTIM2_ETR:3 I2S1_MCK:5 USART3_RX:7 ETH_RXD0:B FMC_SDNE0:C EVENTOUT:F
PC5 TIM1_CH4N:1 SAI1_D3:2 PSSI_D15:4 SAI1_FS_A:6 UART12_DE/UART12_RTS:7 OCTOSPI1_DQS:A ETH_RXD1:B FMC_SDCKE0:C EVENTOUT:F
PC6 TIM3_CH1:2 TIM8_CH1:3 I2S2_MCK:5 SAI1_SCK_A:6 USART6_TX:7 SDMMC1_D0DIR:8 FMC_NWAIT:9 OCTOSPI1_IO5:B SDMMC1_D6:C DCMI_D0/PSSI_D0:D EVENTOUT:F
PC7 TRGIO:0 TIM3_CH2:2 TIM8_CH2:3 I2S3_MCK:6 USART6_RX:7 SDMMC1_D123DIR:8 FMC_NE1:9 OCTOSPI1_IO6:B SDMMC1_D7:C DCMI_D1/PSSI_D1:D EVENTOUT:F
PC8 TRACED1:0 TIM3_CH3:2 TIM8_CH3:3 USART6_CK:7 UART5_DE/UART5_RTS:8 FMC_NCE/FMC_NE2:9 FMC_INT:A FMC_ALE:B SDMMC1_D0:C DCMI_D2/PSSI_D2:D EVENTOUT:F
PC9 RCC_MCO_2:0 TIM3_CH4:2 TIM8_CH4:3 I2C3_SDA:4 AUDIOCLK:5 UART5_CTS:8 OCTOSPI1_IO0:9 FMC_CLE:B SDMMC1_D1:C DCMI_D3/PSSI_D3:D EVENTOUT:F
PC10 LPTIM3_ETR:2 I2S3_CK/SPI3_SCK:6 USART3_TX:7 UART4_TX:8 OCTOSPI1_IO1:9 ETH_TXD0:B SDMMC1_D2:C DCMI_D8/PSSI_D8:D EVENTOUT:F
PC11 LPTIM3_IN1:2 I2S3_SDI/SPI3_MISO:6 USART3_RX:7 UART4_RX:8 OCTOSPI1_NCS:9 SDMMC1_D3:C DCMI_D4/PSSI_D4:D EVENTOUT:F
PC12 TRACED3:0 TIM15_CH1:2 SPI6_SCK:5 I2S3_SDO/SPI3_MOSI:6 USART3_CK:7 UART5_TX:8 SDMMC1_CK:C DCMI_D9/PSSI_D9:D EVENTOUT:F
PC13 EVENTOUT:F
PC14 EVENTOUT:F
PC15 EVENTOUT:F
PD0 TIM8_CH4N:3 UART4_RX:8 FDCAN1_RX:9 UART9_CTS:B FMC_D2/FMC_DA2:C EVENTOUT:F
PD1 UART4_TX:8 FDCAN1_TX:9 FMC_D3/FMC_DA3:C EVENTOUT:F
PD2 TRACED2:0 TIM3_ETR:2 TIM15_BKIN:4 UART5_RX:8 SDMMC1_CMD:C DCMI_D11/PSSI_D11:D LPTIM4_ETR:E EVENTOUT:F
PD3 I2S2_CK/SPI2_SCK:5 USART2_CTS/USART2_NSS:7 FMC_CLK:C DCMI_D5/PSSI_D5:D EVENTOUT:F
PD4 USART2_DE/USART2_RTS:7 OCTOSPI1_IO4:A FMC_NOE:C EVENTOUT:F
PD5 TIM1_CH4N:1 SPI2_RDY:5 USART2_TX:7 FDCAN1_TX:9 OCTOSPI1_IO5:A FMC_NWE:C EVENTOUT:F
PD6 SAI1_D1:2 I2S3_SDO/SPI3_MOSI:5 SAI1_SD_A:6 USART2_RX:7 OCTOSPI1_IO6:A FMC_NWAIT:C DCMI_D10/PSSI_D10:D EVENTOUT:F
PD7 I2S1_SDO/SPI1_MOSI:5 USART2_CK:7 OCTOSPI1_IO7:A FMC_NCE/FMC_NE1:C LPTIM4_OUT:E EVENTOUT:F
PD8 USART3_TX:7 FMC_D13/FMC_DA13:C EVENTOUT:F
PD9 USART3_RX:7 FDCAN2_RX:9 FMC_D14/FMC_DA14:C EVENTOUT:F
PD10 LPTIM2_CH2:3 USART3_CK:7 FMC_D15/FMC_DA15:C EVENTOUT:F
PD11 SAI1_CK1:2 LPTIM2_IN2:3 I2C4_SMBA:4 USART3_CTS/USART3_NSS:7 UART4_RX:8 OCTOSPI1_IO0:9 SAI2_SD_A:A FMC_A16/FMC_CLE:C EVENTOUT:F
PD12 LPTIM1_IN1:1 TIM4_CH1:2 LPTIM2_IN1:3 I2C4_SCL:4 I3C1_SCL:5 SAI1_D1:6 USART3_DE/USART3_RTS:7 UART4_TX:8 OCTOSPI1_IO1:9 SAI2_FS_A:A FMC_A17/FMC_ALE:C DCMI_D12/PSSI_D12:D EVENTOUT:F
PD13 LPTIM1_CH1:1 TIM4_CH2:2 LPTIM2_CH1:3 I2C4_SDA:4 I3C1_SDA:5 OCTOSPI1_IO3:9 SAI2_SCK_A:A UART9_DE/UART9_RTS:B FMC_A18:C DCMI_D13/PSSI_D13:D LPTIM4_IN1:E EVENTOUT:F
PD14 TIM4_CH3:2 UART8_CTS:8 UART9_RX:B FMC_D0/FMC_DA0:C EVENTOUT:F
PD15 TIM4_CH4:2 UART8_DE/UART8_RTS:8 UART9_TX:B FMC_D1/FMC_DA1:C EVENTOUT:F
PE0 LPTIM1_ETR:1 TIM4_ETR:2 LPTIM2_CH2:3 LPTIM2_ETR:4 SPI3_RDY:6 UART8_RX:8 FDCAN1_RX:9 SAI2_MCLK_A:A FMC_NBL0:C DCMI_D2/PSSI_D2:D EVENTOUT:F
PE2 TRACECLK:0 LPTIM1_IN2:1 SAI1_CK1:2 SPI4_SCK:5 SAI1_MCLK_A:6 USART10_RX:7 UART8_TX:8 OCTOSPI1_IO2:9 ETH_TXD3:B FMC_A23:C DCMI_D3/PSSI_D3:D EVENTOUT:F
PE3 TRACED0:0 TIM15_BKIN:4 SAI1_SD_B:6 USART10_TX:7 FMC_A19:C EVENTOUT:F
PE4 TRACED1:0 SAI1_D2:2 TIM15_CH1N:4 SPI4_NSS:5 SAI1_FS_A:6 FMC_A20:C DCMI_D4/PSSI_D4:D EVENTOUT:F
PE5 TRACED2:0 SAI1_CK2:2 TIM15_CH1:4 SPI4_MISO:5 SAI1_SCK_A:6 FMC_A21:C DCMI_D6/PSSI_D6:D EVENTOUT:F
PE6 TRACED3:0 TIM1_BKIN2:1 SAI1_D1:2 TIM15_CH2:4 SPI4_MOSI:5 SAI1_SD_A:6 SAI2_MCLK_B:A FMC_A22:C DCMI_D7/PSSI_D7:D EVENTOUT:F
PE7 TIM1_ETR:1 UART12_DE/UART12_RTS:6 UART7_RX:7 OCTOSPI1_IO4:A FMC_D4/FMC_DA4:C EVENTOUT:F
PE8 TIM1_CH1N:1 UART12_CTS:6 UART7_TX:7 OCTOSPI1_IO5:A FMC_D5/FMC_DA5:C EVENTOUT:F
PE9 TIM1_CH1:1 UART12_RX:6 UART7_DE/UART7_RTS:7 OCTOSPI1_IO6:A FMC_D6/FMC_DA6:C EVENTOUT:F
PE10 TIM1_CH2N:1 UART12_TX:6 UART7_CTS:7 OCTOSPI1_IO7:A FMC_D7/FMC_DA7:C EVENTOUT:F
PE11 TIM1_CH2:1 SPI1_RDY:4 SPI4_NSS:5 OCTOSPI1_NCS:6 SAI2_SD_B:A FMC_D8/FMC_DA8:C EVENTOUT:F
PE12 TIM1_CH3N:1 SPI4_SCK:5 SAI2_SCK_B:A FMC_D9/FMC_DA9:C EVENTOUT:F
PE13 TIM1_CH3:1 SPI4_MISO:5 SAI2_FS_B:A FMC_D10/FMC_DA10:C EVENTOUT:F
PE14 TIM1_CH4:1 SPI4_MOSI:5 SAI2_MCLK_B:A FMC_D11/FMC_DA11:C EVENTOUT:F
PE15 TIM1_BKIN:1 TIM1_CH4N:3 USART10_CK:7 FMC_D12/FMC_DA12:C EVENTOUT:F
PH0 EVENTOUT:F
PH1 EVENTOUT:FКод: Выделить всё
constexpr auto val = find<Pin, Str>();
static_assert(val != AltFunc{ -1 }, ctformat("{} is not valid {} pin!", Pin::toStr(), Str));