всем известный cl.exe (Microsoft (R) 32-bit C/C++ Optimizing Compiler Version) c помощью опций /E /EP /P создает обработанный препроцессором файлик c расширением *.i, который включает все, что было определено в #include. -PREPROCESSOR- /E preprocess to stdout /EP preprocess to stdout, no #line /P preprocess to file Так вот,этот файлик содержит много лишней,неиспользуемой инфы, как бы сделать так, чтоб выводил ТОЛЬКО те структуры,функции,типы, которые реально ИСПОЛЬЗУЮТСЯ в данном коде.
препроцессор тупой-тупой, он просто заменяет все свои директивы и все. никакого анализа кода он не производит.
т.е. типа ниче не сделаешь...?! я нашел 1 способ: делаешь pdb и потом pdbdump чтоб все вытаскиваешь но это криво как то...
khv_test Попробую выразить мысль "препроцессор тупой-тупой" более конкретно На уровне препроцессинга не известно, что используется, а что нет. С точки зрения логики пайплайна это и не должно быть известно - на то он и препроцессор.
Фигасе! Два Правильных и Полных ответа! А если ты сам понаписывал даже и ОДИН файл, в котором во множестве - ты знаешь, как с помощью компилятора получить те из них, которые ? Это тебе стандартные способы не помогут, надо брать какие-нибудь анализеры или самому таковые сочинять
Такое даже компилятор не может делать, этим занимается линкер. Так что проще использовать готовое - pdb.
khv_test Дело в том, что ты хочешь пойти путем, которым никто не ходит. Разбивай на разные инклюдники. То, что ты хочешь - бред, этим никто не занимается. Если тебя смущает скорость компиляции - юзай precompiled headers.
khv_test если вам не нравятся правильные ответы, это уже не сюда. уже сказали, что заставить препроцессор сделать такое невозможно.