我正在使用MATLAB优化平台来实现黑盒成本函数(BBCF)。
为了让用户自由行动,使用的BBCF可以是输入BBF输入参数的任何可执行文件,并且必须输出(返回)BBCF的成本值,以便MATLAB BBCF优化器找到最佳(成本最低) )输入参数。
考虑到,一方面,我的BBCF是用C ++实现的,另一方面是成本值是双(实数),我需要将我的代码编译成一个输出(返回)double的EXE文件
但是,据我所知,当我将一个C ++代码编译为EXE时,它“主要”编译main()函数,其输出是main()函数的输出(即如果运行成功则为0!)
一个想法可能是使用一个返回double的main函数,然后将main()编译为EXE,但不幸的是,它在C ++中是不可能的(如the documentation中所解释的那样或回答this link是C ++的一个错误,这两个问题都不是这个问题的原因。)
任何人都可以通过EXE编译形式的C ++代码,输出(返回)一个double值吗?
答案 0 :(得分:1)
这不是C ++中的一个错误' (顺便说一下,bug可能在某些C ++编译器中,而不是在语言本身中) - 标准中描述的main()应该返回一个整数:
http://en.cppreference.com/w/cpp/language/main_function
关于如何从可执行文件返回非int,有几种方法可以做到这一点。我想到了两个最简单的(就如何实现它们而言)解决方案:
答案 1 :(得分:0)
在英语中,'shall'比'must'更强大。
进行这样的更改需要更改操作系统和shell。这种变化不大可能发生。
传递双返回的最简单方法是将其写入标准输出。或者,有几种方法可用于进程间通信。