вопрос о Preprocessor'е

Discussion in 'LANGS.C' started by khv_test, Mar 4, 2007.

  1. khv_test

    khv_test New Member

    Blog Posts:
    0
    всем известный 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

    Так вот,этот файлик содержит много лишней,неиспользуемой инфы, как бы сделать так, чтоб выводил
    ТОЛЬКО те структуры,функции,типы, которые реально ИСПОЛЬЗУЮТСЯ в данном коде.
     
  2. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    препроцессор тупой-тупой, он просто заменяет все свои директивы и все. никакого анализа кода он не производит.
     
  3. khv_test

    khv_test New Member

    Blog Posts:
    0
    т.е. типа ниче не сделаешь...?!

    я нашел 1 способ: делаешь pdb и потом pdbdump чтоб все вытаскиваешь но это криво как то...
     
  4. _DEN_

    _DEN_ DEN

    Blog Posts:
    0
    khv_test

    Попробую выразить мысль "препроцессор тупой-тупой" более конкретно :) На уровне препроцессинга не известно, что используется, а что нет. С точки зрения логики пайплайна это и не должно быть известно - на то он и препроцессор.
     
  5. khv_test

    khv_test New Member

    Blog Posts:
    0
    2 ответа 0 полезных...
     
  6. Ustus

    Ustus New Member

    Blog Posts:
    0
    Фигасе! Два Правильных и Полных ответа! А если ты сам понаписывал даже и ОДИН файл, в котором во множестве
    - ты знаешь, как с помощью компилятора получить те из них, которые
    ? Это тебе стандартные способы не помогут, надо брать какие-нибудь анализеры :dntknw: или самому таковые сочинять :)
     
  7. khv_test

    khv_test New Member

    Blog Posts:
    0
    еслиб знал хоть один не спрашивал бы тут....
    а ответы нульинформативные.
     
  8. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Такое даже компилятор не может делать, этим занимается линкер. Так что проще использовать готовое - pdb.
     
  9. _DEN_

    _DEN_ DEN

    Blog Posts:
    0
    khv_test

    Дело в том, что ты хочешь пойти путем, которым никто не ходит. Разбивай на разные инклюдники. То, что ты хочешь - бред, этим никто не занимается. Если тебя смущает скорость компиляции - юзай precompiled headers.
     
  10. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    khv_test
    если вам не нравятся правильные ответы, это уже не сюда. уже сказали, что заставить препроцессор сделать такое невозможно.