Может кто уже сталкивался с этим. 1)Есть ли возможность в ассемлерном коде (который будет компилится ml) использовать директивы препроцессора наподобие #ifdef, #if defined() и т.д. 2)Может ли компилятор cl перегнать исходники с .cpp в .asm и при этом не выполнять директивы перепроцессора (оставить их ml)? Может есть другие способы сохранить директивы препроцессора в ассемблерном коде. Буду благодарен любому личному опыту переданному мне.
like_a 1) используй любой внешний си-препроцессор или перенаправь вывод препроцессора в cl в файл (только не забудь ключ /P); 2) ответ отрицательный. компилятор cl вообще не может "перегнать исходники с .cpp в .asm", он может только выдать ассемблерный листинг, генерируемый после обработки файла препроцессором;
с помощью cl.exe можно обработать код только препроцессором и выдать готовый листинг. какие такие директивы препроцессора оставить ml ? если перегнать цпп в асм, это уже подразумевает компиляцию.ъ как ты себе это представляешь вообще?
Либо препроцессором (/P), либо компилятором (/Fa) - это разные вещи. Листинг - это уже откомпилированный код, просто выдаётся не в бинарный, а в текст, после этого работа остаётся только транслятору/ассемблеру.
Всем спасибо за ответы. Видимо нет в природе того что мне надо. Это наводит на мысль о том что я задачу поставил неправильно. Придумаю что-нибудь другое.
Я, кстати, действие противоположное хотел сделать: откомпилить, но обрабатывать препроцессором. И еще с возможностью пройтись препроцессором по сгенерированному asm листингу.
like_a > Я, кстати, действие противоположное хотел сделать: откомпилить, > но обрабатывать препроцессором. препроцессор потому и пре- что работает _до_ компиляции причем, сишный препроцессор слабее масмовского. другой вопрос, что иногда бывает можно извернуться - включить *.h файл в ассемблерный проект, обработать его сишным препроцессором, а потом транслировать ассемблером. я так делал, когда один и тот же *.h приходилось включать как в *.c, так и в *.asm