Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Ссылки VS портабельность
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
ShadowsInRain ShadowsInRain вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.03.2012
По умолчанию Ссылки VS портабельность - 04.03.2012, 23:00

Предыстория.
Я пишу хост для плагинов. Когда плагин загружен, он получает указатель на таблицу функций. Иногда мне нужно построить "текучий интерфейс", типа такого:
cpp Код:
typedef struct{} *ht_MenuNode;
struct iMenuNode
{
    struct iEditor
    {
        typedef iEditor *t_loopback;

        t_loopback (*SetCaption)  (const char *);
        t_loopback (*AddChild)    (ht_MenuNode Child);
        // etc ...

        ht_MenuNode (*GetHandle)();
    };

    iEditor * (*New)  ();
    iEditor * (*Edit) (ht_MenuNode);
    // ...
};

По привычке я использую указатели, но в этом случае мне хотелось бы использовать ссылки, ибо
1. Функции этого интерфейса никогда не вернут невалидный указатель на iEditor.
2. По очевидным причинам сохранять указатель на iEditor недопустимо.
3. Нет необходимости поддерживать совместимость с Си.
4. Я не прочь сэкономить немного времени при наборе длинных текстов.

cpp Код:
iEditor & (*New)  ();
iEditor & (*Edit) (ht_MenuNode);

Но:
1. Под одной и той же платформой плагины могут быть скомпилированы разными компиляторами.
2. Я не видел аналогичных интерфейсов, где бы использовались ссылки.
Поэтому меня терзают сомнения.

Собственно вопрос.
Передача-по-ссылке и возврат-по-ссылке — это портабельные приёмы?
Прописано ли это как-либо в стандарте?

До этого я задавал вопрос на стакЪоверфлов, но ответов вообще не получил, только смутные комментарии.
Ответить с цитированием
  (#2 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 05.03.2012, 15:03

Под одной и той же платформой плагины могут быть скомпилированы разными компиляторами. И даже более того - компиляторами с разных языков программирования!
Так что совместимость с Си тебе поддержать придется таки. Ибо это де-факто "стандарт совместимости".

Передача по ссылке и возврат по ссылке - непортабельные приемы, однозначно. И Стандарт языка не описывает их в терминах "портабельности", т.к. все это сильно завязано на ABI конкретной платформы. Да к тому же надо учесть еще возможность создавать плагины на языках, отличных от C++..... А если еще вспомнить, что кроме x86 существует еще и масса более других аппаратных архитектур.......


The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылки не работают Винитарх О сайте и форуме 10 20.05.2012 00:23
Wordpress и ссылки veter48 PHP 7 24.03.2012 01:50
Дайте ссылки! A.N.Onim Delphi 0 02.01.2012 01:30
Как проверить Web-ссылки reggger Visual Basic 3 13.03.2009 07:26
Уникальные ссылки Garik Офтопик 5 24.05.2008 13:57
Указатели, ссылки как их делать Bar С/С++ 18 05.03.2008 02:15
Относительные ссылки PowerCat Visual Basic 1 23.11.2007 11:52
Как использовать ссылки и указатели wils0n Вопросы начинающих программистов 0 17.12.2005 15:12
Ссылки на решебники задач на С++ pendalegi Вопросы начинающих программистов 2 04.10.2005 15:36
Ссылки на страницы сайта jenyok PHP 4 08.11.2004 12:28
Ссылки на переменные dim@n ASP 0 27.09.2004 20:11
Ссылки на СОМ в VC++ 7 .NET как реализовать Anonymous .NET 0 13.08.2003 17:10



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов