Это макрос, он расширяется, когда вы его используете.
Если вы, например, используйте ("вызов") макрос как
uint16_t i = htons(0x1234);
Это расширится до:
uint16_t i = ((((uint16_t)(0x1234) & 0xff00) >> 8) |(((uint16_t)(0x1234) & 0x00ff) << 8));
Это не так, в отличие от переменной в функции, например,
uint16_t htons(uint16_t A)
{
return (A & 0xff00) >> 8) | (A & 0x00ff) << 8);
}