Совместное использование констант между языками

У меня есть длинный список констант, к которым мне нужен доступ в нескольких проектах на разных языках (Verilog, C, C ++ и C #). Вместо того, чтобы повторять их на каждом языке, есть ли хороший способ поделиться ими?

Единственное, о чем я мог подумать, это текстовый файл и сценарий предварительной обработки?

У меня есть длинный список констант, к которым мне нужен доступ в нескольких проектах на разных языках (Verilog, C, C ++ и C #). Вместо того, чтобы повторять их на каждом языке, есть ли хороший способ поделиться ими?

Единственное, о чем я мог подумать, это текстовый файл и сценарий предварительной обработки?

У меня есть длинный список констант, к которым мне нужен доступ в нескольких проектах на разных языках (Verilog, C, C ++ и C #). Вместо того, чтобы повторять их на каждом языке, есть ли хороший способ поделиться ими?

Единственное, о чем я мог подумать, это текстовый файл и сценарий предварительной обработки? Это лучшее решение или есть что-то более простое / элегантное?

8
задан Kristin Morris 23 August 2010 в 18:01
поделиться

5 ответов

Сценарий предварительной обработки, который автоматически обновляет эти константы в вашем коде, вероятно, является лучшим методом. Зафиксируйте код вместе со своим проектом, чтобы обеспечить его правильность и включить его в сценарий сборки.

9
ответ дан 5 December 2019 в 10:00
поделиться

У вас может быть файл XML с константами для совместного использования и синтаксический анализ на каждом языке.

0
ответ дан 5 December 2019 в 10:00
поделиться

Можете ли вы использовать свой make-файл (или эквивалент) для определения этих констант? Для C и C ++. вы можете использовать параметры интерфейса командной строки компилятора для определения значений препроцессора для констант. Я не особо настраивал сборку для Verilog, но подозреваю, что и там может существовать нечто подобное.

1
ответ дан 5 December 2019 в 10:00
поделиться

Вы можете написать простой файл в виде

const1 = value1
const2 = value2
const3 = value3

и затем применить что-то вроде, для c:

s/\([a-zA-Z][a-zA-Z1-9_]*\)[ \t]*=[ \t]*\(. *\)/#define \1 \2/

Стоит отметить, что вам может понадобиться указать типы, потому что не все языки позволят вам использовать макрос препроцессора, который не заботится о типе.

В качестве альтернативы вы можете сделать лексер/парсер во Flex/Bison для разбора конфигурационного файла. Это будет понятнее и проще для расширения.

1
ответ дан 5 December 2019 в 10:00
поделиться

Вы можете сохранить их в XML-документе и написать сценарии XSLT для каждого языка, чтобы генерировать соответствующие исходные файлы в каждой сборке.

6
ответ дан 5 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: