.. _macros: ====== 宏 ====== 宏声明为: .. code-block:: c macro NAME(argument1, argument2, ...) ... endmacro 在宏中,所有出现的 ``argument1`` 都将替换为宏调用时传递的参数,包括宏中的 hlsl 块。 无法取消定义宏,但可以选择性地定义宏: .. code-block:: c define_macro_if_not_defined NAME(argument1) ... endmacro 如果之前没有定义过宏 ``NAME`` ,它将只定义宏 ``NAME`` 。 我们有一些关于宏的命名约定: - ``INIT_...`` 宏中不应包含任何 hlsl 代码。 - 如果您的宏包含其他宏, ``USE_...`` 和 ``INIT_...`` 宏应相应地分开。