Можем ли мы использовать макросы #ifdef в INI-файле, или как мы можем ограничить компиляцию настроек, записанных в INI-файле? - PullRequest
0 голосов
/ 24 сентября 2019

Привет, у меня есть код, в котором он использует несколько INI-файлов для предопределенных настроек.Могу ли я использовать #ifdef в INI-файле, если да, то как я могу это использовать?Если НЕТ, как я могу ограничить компиляцию кода в файлах INI.например, у меня есть один макрос - "FLAG_A" У меня есть INI-файл, как показано ниже

setting.ini

Volume = 10    
Brightness = 30    
A_Variable  = 0    

Я хочу использовать его как

#ifdef FLAG_A    
Volume = 5    
#endif    
Brightness = 30    
A_Variable = 0    

1 Ответ

0 голосов
/ 24 сентября 2019

Файлы Ini обычно не компилируются компиляторами C ++.Скорее, компиляторы C ++ компилируют исходные файлы C ++.Фактически, ini-файлы вообще не компилируются вообще, поскольку ini-файлы не являются скомпилированным языком.

Препроцессор C (по сути такой же, как C ++) не предназначен для другой обработки макросов, чем для целейязыка.Некоторые компиляторы позволяют вызывать препроцессор отдельно без компиляции.Пример:

gcc -E file.ini

Но поскольку целью является компиляция, в дополнение к обработке и замене ваших директив соответствующим выводом, добавятся директивы, определенные реализацией для целей компилятора.Если ваш ini-процессор поддерживает символ # в качестве комментария, тогда эти директивы удобно интерпретировать как комментарии.В противном случае, это, вероятно, вам не пригодится.

Несмотря на это, существуют и другие независимые языки макросов, а также процессоры шаблонов, отличные от того, который используется препроцессором Си.Я предлагаю вам использовать один из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...