Правило в C ++ заключается в том, что #include <cmath>
помещает объявление abs
в пространство имен std
и позволяет также помещать объявление abs
в глобальное пространство имен. [1112 ]
Другое правило в C ++ состоит в том, что #include <math.h>
помещает объявление abs
в глобальное пространство имен и позволяет также помещать объявление abs
в пространство имен std
. [1113 ]
Итак, нет, вы не можете предположить, что #include <cmath>
не поместит abs
в глобальное пространство имен.
Причина этого правила вместо «очевидного», которое #include <cmath>
помещает имена только в std
, заключается в том, что последнее правило может быть неприятным для реализации, если разработчики C ++ также не имеют контроля над заголовками C , В этом случае заголовки C ++ должны иметь повторяющиеся объявления для всех функций C, и любое изменение заголовков C должно переноситься в заголовки C ++, что создает логистический кошмар.
может быть, попробовать использовать свойство для общих битов с arg-line? что-то вроде этого:
<property name="xslt.common" value="--xinclude -o dist/html/main.html xsl/html/docbook.xsl xml/main.xml"/>
<exec executable="cmd" osfamily="winnt">
<arg value="/c"/>
<arg value="xsltproc\bin\xsltproc.exe"/>
<arg line="${xslt.common}"/>
</exec>
<exec executable="xsltproc" osfamily="unix">
<arg line="${xslt.common}"/>
</exec>
Я думаю, версия для Unix будет работать под NT, если у вас есть xsltproc.exe, доступный через переменную среды PATH. Вы можете попробовать удалить семейство osfamily и посмотреть.
Вы можете объединить общие части в элементе и условно выполнить определенные части.