LINUX.ORG.RU

Разве __LINE__ -- не встроенный макрос препроцессора? .S-сорцы должны по умолчанию прогонятся через cpp, и __LINE__ там должен работать.

spy_
()
Ответ на: комментарий от spy_

Да, __LINE__ встроенный макрос препроцессора. Но я использовал только as и ld, хотя и пробовал вариант с предварительным пропусканием исходников через gcc (gcc -E main.s > tmp/main.s). Это не работало. Теперь я понимаю почему. По умолчанию gcc принимает .S-файлы как исходники с assembler-ом и cpp, а .s-файлы - исходники только с assembler-ом. У меня только .s файлы в проекте, поэтому не работало. Буду переименовывать в .S или передавать gcc опцию -x assembler-with-cpp. Спасибо.

LinuxUser ★★★
() автор топика
Ответ на: комментарий от LinuxUser


а если попробовать прогонять их не через gcc но через cpp? последний собственно и есть stand alone препроцессор.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от LinuxUser

> У меня только .s файлы в проекте, поэтому не работало. Буду переименовывать в .S или передавать gcc опцию -x assembler-with-cpp.

По соглашению, .s — временные нагенерённые файлы, образуемые в результате компиляции с языка более высокого уровня, .S — файлы, содержащие программы, написанные на ассемблере человеком. Разумно, что автогенерённые файлы уже наверняка либо прошли препроцессинг, либо в нём не нуждаются по какой-либо иной причине.

Соответственно, ничто не запрещает make clean снести нафиг твой проект, если он состоит слошь из .s, а не из .S. Более того, возможно в случае automake он так и делает.

trapezoid
()
Ответ на: комментарий от trapezoid

Согласен. Переименовал в .S.

make clean не снесёт .s, потому как я сам пишу Makefile :)

LinuxUser ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.