У меня есть длинный список констант, к которым мне нужен доступ в нескольких проектах на разных языках (Verilog, C, C ++ и C #). Вместо того, чтобы повторять их на каждом языке, есть ли хороший способ поделиться ими?
Единственное, о чем я мог подумать, это текстовый файл и сценарий предварительной обработки?
У меня есть длинный список констант, к которым мне нужен доступ в нескольких проектах на разных языках (Verilog, C, C ++ и C #). Вместо того, чтобы повторять их на каждом языке, есть ли хороший способ поделиться ими?
Единственное, о чем я мог подумать, это текстовый файл и сценарий предварительной обработки?
У меня есть длинный список констант, к которым мне нужен доступ в нескольких проектах на разных языках (Verilog, C, C ++ и C #). Вместо того, чтобы повторять их на каждом языке, есть ли хороший способ поделиться ими?
Единственное, о чем я мог подумать, это текстовый файл и сценарий предварительной обработки? Это лучшее решение или есть что-то более простое / элегантное?
Сценарий предварительной обработки, который автоматически обновляет эти константы в вашем коде, вероятно, является лучшим методом. Зафиксируйте код вместе со своим проектом, чтобы обеспечить его правильность и включить его в сценарий сборки.
У вас может быть файл XML
с константами для совместного использования и синтаксический анализ на каждом языке.
Можете ли вы использовать свой make-файл (или эквивалент) для определения этих констант? Для C и C ++. вы можете использовать параметры интерфейса командной строки компилятора для определения значений препроцессора для констант. Я не особо настраивал сборку для Verilog, но подозреваю, что и там может существовать нечто подобное.
Вы можете написать простой файл в виде
const1 = value1
const2 = value2
const3 = value3
и затем применить что-то вроде, для c:
s/\([a-zA-Z][a-zA-Z1-9_]*\)[ \t]*=[ \t]*\(. *\)/#define \1 \2/
Стоит отметить, что вам может понадобиться указать типы, потому что не все языки позволят вам использовать макрос препроцессора, который не заботится о типе.
В качестве альтернативы вы можете сделать лексер/парсер во Flex/Bison для разбора конфигурационного файла. Это будет понятнее и проще для расширения.
Вы можете сохранить их в XML-документе и написать сценарии XSLT для каждого языка, чтобы генерировать соответствующие исходные файлы в каждой сборке.