Я реализовал связанный список в C (не C++), который хранит указатели на данные. Я хотел бы иметь несколько деклараций для своих функций (для обеспечения безопасности типов), но каждый из них ссылается на одно и то же определение (потому что нет фактической разницы между указателями на разные типы данных, поэтому использование одного и того же кода уменьшает пространство).Связать несколько деклараций с тем же определением
Есть ли у кого-нибудь идеи о том, как достичь этого (или каких-либо лучших способов сделать это)? Портативное решение, очевидно, лучше всего, но мне действительно нужно что-то, что работает в GCC.
Написал ли несколько деклараций действительно какой-либо тип безопасности? Я предполагаю, что у вас есть функции вставки/удаления, которые перегружены - что мешает вам вставлять один тип и удалять с другим? – derekerdmann
@derekerdmann: В одном из объявлений принимается int * (например), поэтому компилятор будет жаловаться, если вы попытаетесь передать это объявление myStruct *. Определение будет принимать пустоту *. Компилятор увидит каждое объявление как отдельную функцию, и они становятся только теми же, когда линкер добирается до них. –
Декларация также требует принятия 'void *' для 'myStruct *' для принятия - это то, на что смотрит компилятор, когда выясняется, совпадают ли аргументы, а не определение. – derekerdmann