在所有 cout 写入 consol 之前,main() 是否可以返回
Can a main() return before all cout has been written to the consol?
我尝试在调用C++程序的R脚本中跟踪错误。R告诉我,我的C++返回了NA - 但当我浏览程序时,情况似乎并非如此。因此,我的问题是,如果 R 可能永远不会捕获 C++ 程序的输出,因为在所有输出写入控制台之前调用return 0
。
我的程序确实将一些数字写入控制台。每行一个数字,最后一行以 endl
结尾。
main()
{
cout<<33.12<<"n"; //print a couple of number to cout
cout<<9711.3<<"n"<<5699.14<<endl;
return 0;
}
我的R脚本是这样做的事情:
x <- as.numeric(system("./myProgram", intern=T))
if(any(is.na(x))) {
stop("Wooppp, x is NA: ", x)
}
难道 R 没有从程序获得 cout 输出吗?此问题与相应的 R 问题相关:DEOptim一直在讲述:目标函数的NaN值
一般来说,是的,在 main() 结束之前,部分输出可能尚未刷新。但是,在程序结束时,无论如何都应该刷新所有内容。
更详细的是,main 只是一个函数,对于程序员来说,这是程序的入口点,尽管实际上运行时在此调用之前/之后会执行某些部分。这包括加载共享对象,调用全局变量的析构函数以及其他一些您作为常规程序员实际上不应该知道的东西。
由于 std::cout 是一个全局对象,它将使用其析构函数来刷新正确的数据。虽然由于大多数实现都刷新在""字符上(认为不需要),std::endl和std::flush(我认为这是必需的),但无论如何这个例子应该没问题。
我会尝试拆分此问题,并尝试将C++程序的输出推送到文件以随后读取它(两者都来自同一个 R 程序),尝试控制台输入......
相关文章:
- 如何检查 log2 'inbuilt c++ function'是否返回 '-inf'?
- 如何检查 range:: 算法(如 find_if)是否返回了值?
- 如何检查 CNG Windows API 是否返回符合 FIPS 的算法实现
- 检查成员函数是否返回临时对象或数组对象
- 如何知道 sqlite 中的函数"回调"是否返回了一些东西?
- 地址运算符是否返回变量引用的对象的地址
- 如何检查copy_if是否返回使用ostream_iterator范围内的任何内容
- MMAP是否返回对齐的指针值
- 如何验证 LLVM "ret"指令是否返回 void?
- C++ - 我应该制作“运算符+”常量吗?它是否返回引用
- 为什么主函数不识别其他功能是否返回float类型编号
- 此getter是否返回由构造函数或对班内对象的引用给出的引用?C
- NAN通过指针访问时是否返回false
- 此构造函数是否返回实例
- 如何判断"->"运算符最终是否返回类型?
- QMutexLocker 是否返回错误代码(如果有)
- 检查 Gdiplus::Bitmap::FromFile 是否返回了有效的位图
- 引用数据类型的 & 符号是否返回引用本身的地址或它所引用的值
- 如何使用 if 语句来检查函数是否返回"true"?
- int() 是否返回 0 或任意值