Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 38

Тема: Существует ли в CoDeSys v.2(v.3) альтернатива #if defined

  1. #21
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    У директивы #define более широкие возможности. Здесь почитайте: http://www.c-cpp.ru/books/define
    Смешно когда отправляют к научно-популярным публикациям, есть же спецификация, вики в конце концов. Вариантов всего два у define - это константа и макрос, я ни слова не сказал про вычисления, а только про ту часть которая касается констант, поэтому говорить о другом варианте, после неудачного захода про константы, незачем было. Смысл моей реплики был в том, что частичная альтернатива в КДС существует, кстати макрос можно заменить действием. Самое главное спрашивающий не уточнил, что конкретно ему необходимо, может достаточно обычной функции чтоб решить все его задачи
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #22
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    Вот один из вариантов моего видения, как можно использовать что то типа define в КДС, например сделать преобразование на своих условиях
    Изображения Изображения
    • Тип файла: png owen.png (110.2 Кб, Просмотров: 28)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #23

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    А при чем тут VAR CONSTANT ?

    Директива #define определяет идентификатор и последовательность символов, которой будет замещаться данный идентификатор при его обнаружении в тексте программы.

    Например, если необходимо использовать TRUE для значения 1, a FALSE для 0 то можно объявить следующие два макроса:

    #define TRUE 1
    #define FALSE 0
    Такое определение ST не известно: если в окне переменных написать, то ошибка:
    Здесь должно быть: 'VAR', 'VAR_INPUT', 'VAR_OUTPUT' или 'VAR_IN_OUT'
    если в теле программы, то:
    Требуется ST-выражнение или окончание POU

    В догонку, а какой синтаксис определения числа в битовом виде? Типа 0b11001000

  4. #24

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    Такое определение ST не известно: если в окне переменных написать, то ошибка:
    Здесь должно быть: 'VAR', 'VAR_INPUT', 'VAR_OUTPUT' или 'VAR_IN_OUT'
    если в теле программы, то:
    Требуется ST-выражнение или окончание POU

    В догонку, а какой синтаксис определения числа в битовом виде? Типа 0b11001000
    2#11001000

    а в шестнадцатиричном 16#00CB

  5. #25

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    У директивы #define более широкие возможности. Здесь почитайте: http://www.c-cpp.ru/books/define
    А при чем здесь СИ к языку ST, который больше похож на Паскаль?

  6. #26

    По умолчанию

    Цитата Сообщение от Мимоход Посмотреть сообщение
    2#11001000
    А что означает 2 и #

  7. #27

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    А что означает 2 и #
    A:= 2#11001000 -присвоит значение 0b11001000 переменной А

  8. #28

    По умолчанию

    Круто! Никогда б не подумал...

  9. #29

    По умолчанию

    Цитата Сообщение от Мимоход Посмотреть сообщение
    2#11001000

    а в шестнадцатиричном 16#00CB
    Дошло! Число, перед решеткой - система счисления

  10. #30

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а зачем думать, когда документация есть
    Вот я и не понял написанное в документации:

    Обычно при использовании МЭК констант подразумевается наименьший из возможных типов данных. Если нужно точно указать тип константы, применяется префикс типа: <Type>#<Literal>
    <Type> указывает необходимый тип. Это может быть: BOOL, SINT, USINT, BYTE, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, LREAL. Тип нужно указывать заглавными буквами.
    <Literal> указывает значение константы.
    Пример:
    var1:=DINT#34;

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •