问题描述
笔者在对linux高性能服务器的学习中,在对网上代码以及游双所著书本中的代码进行运行的时候,又出现终端返回退出代码为-1,而并不回报任何错误,代码无法成功编译成可运行文件,一开始也不清楚哪里发生了什么问题,在进行代码的进一步编程的时候,在分批注释代码运行的过程中,发现主要是std::会引发这种情况。
问题复现
笔者出现的这个问题其实很简单解决,但是笔者后来在网上没找到相关的内容,在寻找问题和解决问题的过程中耗费了大量的时间,所以发个贴补充一下这部分的内容,本人萌新,希望大佬们多多指点。
#include <iostream>
int main()
{
printf("what can i say \n");
std::cout << "Hello World!" << std::endl;
return 0;
}
其实就是一开始的调试环境选择错误了,选用了gcc,这是用于编译c语言的,而c语言与c++语言,因为c中并没有定义string类型,故在调用的时候会出现问题,因为一开始的对库的调用中不涉及这部分变量类型的使用,程序莫名奇妙的能动,而在一开始编译后vscode就在你的工作文件夹内放置了tasks.json来记录编译环境方便下次直接编译,这就是在后来在使用到相关std的操作时报出退出代码为-1,而很难发现问题出在那,因为一开始它是可运行的。
想要解决,也很简单,就是把vscode里文件夹中的json文件删除再运行,如果没有就点一下运行三角形旁边齿轮,更换环境(此时左边文件夹侧边栏也会出现json文件),不行在删除json文件再运行。
总结
首先,这其实是一个比较马大哈,甚至是很简单的问题,网上也找不到相关的内容,想起来大概是没什么和笔者一样铸币吧,这也表现出来我一开始的代码很靠近c语言,这才能让编译器浑水摸鱼这么久,到后面进行http解析的时候,涉及到string和指针地狱的时候,本人也是很烦躁,特别是怎么写都是退出代码-1,特别是一开始有bug跑不了,搞倒最后回一个退出代码-1,直接心态爆炸。
收获也是蛮多的,其实笔者也做了很多其他尝试,更新gcc和g++甚至重新安装ubuntun和vm虚拟机,很好笑的是vscode第一个选项就是gcc次次中招,次次都是退出代码-1,在后来直接尝试使用终端使用命令编译,神奇的是居然成功了,就开始从IDE的方向思考,又重新下了一个atom(以前在linux用这个跑python的深度学习的编译器)尝试跑cpp,确定是vscode的问题(猜测是环境配置问题),为了以后更好的使用这个软件,去网上看了相关的环境问题,最后确定是环境设置问题。给我的感触其实就是要反推,和将整体划分成一个又一个的模块,在后面看他人项目的时候,这种感触就特别深,进行项目功能复现的时候也是如此。