Задать вопрос
@pixik

Как сделать так, чтобы main() возвратила double?

Проблема заключается в том, что из C# проекта вызывается консольная С++ программка с ключами, и в некоторых случаях мне нужно вернуть число типа double из С++ проекта в C# проект как возвратное значение. Тип Int я умею получать. У меня полно вариантов с костылями типа через файл записать итп... но можно это как нормально сделать? или просто мне странного хочется?:)

Спасибо всем!
  • Вопрос задан
  • 1105 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
@raiboon
Не путайте вывод команды и код выхода. Испльзуйте печать в stdout, к примеру, а из c# читайте.
"тандартная возможность передачи объекта через буфер между языками" - часто используют для этого очереди. zeromq, к примеру.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Вам хочется странного. Код возврата из приложения -- целое число, это жёстко закодировано во многих местах ОС. В POSIX это часть стандарта. В C и C++ это часть стандарта.
Ответ написан
heksen
@heksen
может return (double)ваша_переменная. ну а вообще компилятор возвращает только целые значения
Ответ написан
@ubuntuman
Beginner developer
Мне почему-то кажется, что для этого проще сделать новый класс/функцию, которая будет выполнять нужные вам действия. Не стоит выделять его в отдельную программу.
Ответ написан
@Dvvarreyn
1. Если С++ программка написана более менее разумно, то должно быть возможно превратить её в dll.
И тогда спокойно возвращать double.

2. Костыль через арифметику с фиксированной запятой, где точность представления определена априори (или через ключи). И вместо x возвращать static_cast(x*precisionMultiplier).
Ответ написан
@pixik Автор вопроса
Я сделал аналог клиент - серверного приложения на стандартных потоках ввода вывода. Т.е. для Сишной проги написал маленький обработчик на си, который читает из cin и в зависимости от команды, то и выполняет. Результат пишет в cout, а потом строка интерпритируется как число double.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы