-
- Это ввели в MCU Header Files С-компилятора XC16 (для
dsPIC30/33/PIC24), начиная с одного из не слишком давних релизов -
прежде не заморачивались. Но разве тут во 2-й строке CNPUB уже не
#define'd ? MBedder(544 знак., 15.04.2020 22:30)
- Начиная со второй строки все CNPUB заменяются на CNPUB... Но по мне, если это пункт 2 -- то тоже сомнительно. Лучше сделать feature-макросы и писать что-то вроде #if MCU_HAVE_SUPER_TIMER... Потому, что во-первых очевидней, во-вторых бывают неочевидные зависимости, когда какая-либо функция (feature) контроллера может потянуть за собой взаимосвязь сразу нескольких SFR-регистров или наоборот, быть независимой от регистров. Я всё же склоняюсь к варианту 4. - fk0(15.04.2020 22:39)
- Непонятно, кому нужно #ifdef CNPUB. Скорее всего, никому. Гораздо
правдоподобнее выглядит версия про защиту от повторного
определения. - SciFi(15.04.2020 22:37)
- А то, что CNPUB и без #define CNPUB CNPUB во второй строке
определено, разве и так не даст защиту от повторного определения? - MBedder(56 знак., 15.04.2020 22:53)
- extern что-угодно -- не даст, их сколько угодно может быть. Но строчкой ниже typedef который таки даст (защиту, и не даст повторно определиться). - fk0(15.04.2020 23:58)
- Если уберёшь #define CNPUB CNPUB, то ниже кто-нибудь может написать
#define CNPUB (*(uint16_t volatile*)0x12345678), и не будет никаких
предупреждений. - SciFi(15.04.2020 23:16)
- Да чего мелочиться, ниже можно написать #define static (пусто) и
вариации на тему #define i (i+1) и т.п. И получить космический
глюкодром. Что теперь, на каждый используемый идентификатор делать
отдельный дефайн? fk0(22 знак., 15.04.2020 23:56)
- Ну микрочиповские индопрограммеры же сделали - MBedder(16.04.2020 00:12)
- Почему? - MBedder(15.04.2020 23:26)
- Ты сначала напиши, почему ты (ошибочно) считаешь, что
предупреждение будет. Схерали я постоянно отдуваюсь? - SciFi(15.04.2020 23:30)
- Ну и звени(те). Вон и fk0 говорит, что строчкой ниже typedef таки не даст повторно определить - MBedder(16.04.2020 00:15)
- Ты сначала напиши, почему ты (ошибочно) считаешь, что
предупреждение будет. Схерали я постоянно отдуваюсь? - SciFi(15.04.2020 23:30)
- Да чего мелочиться, ниже можно написать #define static (пусто) и
вариации на тему #define i (i+1) и т.п. И получить космический
глюкодром. Что теперь, на каждый используемый идентификатор делать
отдельный дефайн? fk0(22 знак., 15.04.2020 23:56)
- А то, что CNPUB и без #define CNPUB CNPUB во второй строке
определено, разве и так не даст защиту от повторного определения? - MBedder(56 знак., 15.04.2020 22:53)
- Это ввели в MCU Header Files С-компилятора XC16 (для
dsPIC30/33/PIC24), начиная с одного из не слишком давних релизов -
прежде не заморачивались. Но разве тут во 2-й строке CNPUB уже не
#define'd ? MBedder(544 знак., 15.04.2020 22:30)