Как исключить коды, которые являются «серыми» в редакторе vscode, из результатов глобального поиска?

#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.