#visual-studio-code
Вопрос:
После установки c/c IntelliSense в коде Visual Studio и настройки c_cpp_properties.json код, отключенный макросом, окрашен в серый цвет, что указывает на недопустимые коды.
Например, printf()
оператор в следующем коде имеет серый цвет.
void Test(void)
{
#ifdef NDEBUG
printf("release mode.");
#endif
}
Мой вопрос в том, можно ли исключить эту строку из результата глобального поиска в vscode?
Я не хочу исключать весь файл целиком, а только некоторые строки в файле.
Вот объяснение того, почему я хочу эту функцию.
В нашем коде тестовый код записывается в один файл вместе с кодом приложения. Тестовый код помещен между #ifdef UNIT_TEST и #endif, поэтому легко отключить/включить тестовый код, включив/выключив модульный тест MARCO в конфигурациях IDE. Однако вы знаете, что тестовый код создал множество тестовых случаев для многократного вызова функции, подлежащей тестированию, поэтому это очень сбивает с толку, когда я пытаюсь найти, где функция вызывается в проекте. Так много мест для вызова этой функции, в то время как большинство из них находятся в тестовом коде!
Комментарии:
1. Вы не можете, функция поиска просто сканирует все документы как чистый текст и не учитывает языковые функции, такие как макросы, препроцессор и так далее. Возможно, какой-то плагин расширяет функциональность поиска, но я в этом сомневаюсь. В любом случае было бы лучше, если бы вы объяснили, зачем вам это нужно, поскольку, возможно, существует альтернативный подход к вашей проблеме. Например, некоторые IDE могут индексировать не только все определения символов, но и все места, где они фактически используются (VS ReSharper может).
2. «указывает на недопустимые коды» s/действительный/активный/.
3. Это чистый вопрос ПРОТИВ. Тег C , похоже, не имеет отношения к делу.
4. Тогда зачем искать код с комментариями? На практике большую часть времени вы хотите найти все результаты. Например, если вы хотите заменить
printf
наmyprintf
, вам нужно заменить затем внутри #ifdef/#endif. Некоторые из них могут быть скомпилированы за пределами IDE, и определение может быть задано неправильно. В конце концов, лучше все обыскать. Также #ifdef не следует использовать так часто, чтобы это действительно оказало такое влияние на результаты.5. @MarekR, мне это нужно просто для удобства. В нашем коде тестовый код записывается в один файл вместе с кодом приложения. Тестовый код помещен между #ifdef UNIT_TEST и #endif, поэтому легко отключить тестовый код, отключив тест MARCO UNIT_TEST.