Оператор, перегружающийся в C

В C++ я могу изменить оператор на определенном классе путем выполнения чего-то вроде этого:

MyClass::operator==/*Or some other operator such as =, >, etc.*/(Const MyClass rhs) {
    /* Do Stuff*/;
}

Но с тем, чтобы там быть никакими классами (встроил по умолчанию) в C. Так, как я мог сделать оператор, перегружающийся для просто общих функций?

Например, если я помню правильно, импортирование stdlib.h дает Вам-> оператор, который является просто синтаксическим сахаром для (*strcut_name) .struct_element.

Таким образом, как я могу сделать это в C?

Спасибо.

6
задан Leif Andersen 10 April 2010 в 03:03
поделиться

4 ответа

Обычный старый C не имеет перегрузки оператора в какой-либо форме. «Оператор» -> для доступа к члену указателя является стандартным C и не вводится никаким файлом заголовка.

15
ответ дан 8 December 2019 в 05:54
поделиться

Конечно, вы не можете перегрузить операторы в C. Оператор -> является частью языка C, #include не требуется.

1
ответ дан 8 December 2019 в 05:54
поделиться

Оператор разыменования указателя структуры -> является частью спецификации C. stdlib.h не влияет на это.

1
ответ дан 8 December 2019 в 05:54
поделиться

Встроенные операторы в языке C перегружены . Тот факт, что вы можете использовать двоичный код + для суммирования целых чисел, чисел с плавающей запятой и выполнения арифметических операций с указателями, является каноническим примером перегрузки оператора .

Однако C не предлагает функций для перегрузки оператора на уровне пользователя. Вы не можете определять свои собственные операторы в C.

5
ответ дан 8 December 2019 в 05:54
поделиться