Комплексные числа в языке Си
В языке Си есть поддержка комплексных чисел. Причем в Си есть поддержка арифметических операций с комплексными числами на уровне синтаксиса. Как это реализовано? На уровне макросов, или на уровне компилятора? Если реализовано на уровне макросов, то возможно ли на этих же макросах определить новый тип данных, который представляет из себя, скажем, элемент полугруппы (с точки зрения математики), а в качестве операции на этой полугруппе использовать элемент синтаксиса языка - операцию "+"?