Есть ли структурный тип эквивалентности в C? - PullRequest
1 голос
/ 29 января 2011

Есть ли структурная эквивалентность типов в C?

Ответы [ 3 ]

3 голосов
/ 29 января 2011

Строго говоря, нет - типы с разными именами - это разные типы, даже если структура типов одинакова. (Конечно, typedef просто вводит альтернативное имя для существующего типа; такие типы имеют одинаковый тип.)

Однако на практике есть ряд трюков, с которыми можно справиться. Но строго они обманывают. Использование указателей void является одним из способов подорвать систему; другой не использует объявления прототипов функций; Списки аргументов переменной длины могут быть другими.

0 голосов
/ 29 января 2011

Нет оператора для сравнения двух структур в C, вместо этого вы можете использовать memcmp:

if( memcmp( &structvar1, &structvar2, sizeof structvar1 ) )
  puts("not equal");
else
  puts("equal");
0 голосов
/ 29 января 2011

Если вы спрашиваете, можно ли сравнить два struct на равенство, ответ - нет. Существует только присвоение, и вы можете вернуть структуру из функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...