visualstudio如何修改默认生成的cpp?

  •         中文版windows下的vs的编辑器默认是gbk编码中,如果源码中带有中文(比如打印中文字符),在centos下编译会出现中文无法显示的问题(并不会出现乱码)。如果将源码保存为utf8无bom格式的centos是可以支持,但是在windows下的vs编译会出现error C2001:常量中有换行符。最后把源码改为保存为utf8有bom格式的,windows和linux都支持。因此带中文的cpp源码最好保存为utf8有bom格式的。

         那么问题来了,vs如何设置cpp文件默认保存为utf8有bom格式的(UTF-8带签名)。网上的做法都是针对指定文件在高级保存选项里设置,如下图:

        这个不是我要达到的效果。因为如果文件太多的话一一设置太麻烦了。我想能否新建一个源码文件后默认保存的就是utf8有bom格式的。


  • 感谢你在MSDN论坛发帖。

    2.另外不知道这个VS工具能否帮助到你,注意此工具为三方开发者开发,微软并不会对此工具的质量和安全负责。


    如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击,或扫描以下二维码注册获取相关信息。


}

本文中记录了笔者在基于Visual Studio MFC编程时, 程序调试过程中所遇到的问题及解决方法。


Ctrl+F5两个按钮同时按下。

在代码页面,Ctrl+A,全选代码,之后分别:Ctrl+K、Ctrl+F,即可实现自动排版。

或者采用另一种方式:Ctrl+A,Alt+F8,即可实现。

……………………………………………………………………………………………………………………………………………

1)、用网线连接两台电脑

2)、在两台电脑的“打开网络和共享中心”→“更改适配器设置”中均应该是如下状态:

IP地址:设置成最后一位不一样的

3)、在两台电脑上打开“网络调试助手”(可网上下载),协议类型分别是server和client,两边的IP都设置成和服务器server一致,端口号设置成一样的。

4)、连接正常的现象:两端能正常互相传输信息即可。

5)、如果连接有问题,可尝试以下操作:

②服务器和客户端反向,也即两台电脑配置颠倒一下试一试。采用这个办法解决了两台电脑无法网络通讯的问题。

怎样实现2个网络调试助手的通信?

使2个网络调试助手之间建立通信,以方便调试:

1、两台电脑用网线连接。确保网线两端的连接有效。

网络配置成上述那样,之后确定。

3、电脑1上打开如下软件:

协议类型:TCP Server(应先配置服务器);本地IP地址:和刚才在“网络和共享中心”中配置的一致;本地端口号:如果配置成8080则无法连接,最后配置成了8081方可连接。

4、之后就可以进行连接,连接成功后如下图所示:

“网络和共享中心”中配置IP地址为:192.168.1.90,也即和电脑1的192.168.1.91在最后一位有区别即可。

6、在电脑2上打开如下软件:

服务器端口:8081(和电脑1保持一致)

(客户端Client的连接应该是在服务器Server之后。)

7、服务器连接成功之后,就可以进行电脑1和电脑2之间的网络通信。

……………………………………………………………………………………………………………………………………………

一个基于Dialog的对话框,放入一个Rich Edit 2.0 Control,(其他都不作改动)对话框就不显示了呢?

今天遇到这个问题,特此记录!

……………………………………………………………………………………………………………………………………………

报错:不能将参数 1 从“LPTSTR”转换为“char *”与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

……………………………………………………………………………………………………………………………………………

最近使用wince开发的socket连接公网IP,发现一些情况下调用WSAGetLastError返回的结果为0,而0是socket正常的标志,而明明SOCKET_ERROR == nRet了,具体发现一部分调用返回10065之类的,而一部分返回0.后终于找到原因:int err=WSAGetLastError();的调用必须放到其他系统函数调用之前,也就是说,出现错误后,第一时间存储WSAGetLastError结果,而不能调用其他函数之后再调用此函数。因为调用系统函数会清除WSAGetLastError,致使结果返回0.

……………………………………………………………………………………………………………………………………………

网络连接不顺利则程序卡死。需要有网络连接延时判断,连接超时则报错,从而保证程序的鲁棒性。

但是当我们的客户端通过connect 函数连接服务端时,这时超时时间很长,那我们应该如何设置connect的超时时间呢?

查资料后发现,select方法可以查询socket套接字的状态。

连接之后将socket添加到描述符rfb中,这样就可以对这个socket进行测试了。一个描述符可以添加多个socket

下面执行select函数,进行查询

如果在超时时间之内连接成功

则将socket重新设置为阻塞状态

下面就可以进行正常的recvsend操作了。

顺便记录下,多网卡发送数据的操作。

当客户端去主动连接服务端的时候(TCP),默认是不需要指定,本地的ip与端口的,操作系统会自动给你分配端口,然后根据路由自动选择出口。

但是当你想主动根据不同的数据去选择不同的网卡发送时,我们应该怎么做呢。

YC:在激光雷达网络通讯程序中,调通的代码记录如下:(在TCPSocket.cpp中)

也就是说,出现错误后,第一时间存储WSAGetLastError结果,

而不能调用其他函数之后再调用此函数。因为调用系统函数会清除WSAGetLastError,

……………………………………………………………………………………………………………………………………………

在主对话框中调用子对话框类中的成员函数,也即成员的跨类使用:

实现过程记录(YC):

YC:头文件包含在.cpp中比包含在.h中更合适,因为如果包含在.h中,容易导致头文件互相包含、自我包含的问题。在实际使用时,这些问题都需要注意。

在C_MOTOR.cpp文件开头定义全局变量:

在子界面的初始化函数BOOL C_MOTOR::OnInitDialog()中,添加代码:pDlg = this;用于记录此时此刻的对话框指针,后续在主对话框中调用该子对话框的函数时需要用到。如下图所示:

如此即可实现主界面对子界面函数的调用,也即跨类调用成员函数。

(此外,如果需要跨类调用变量,需要对其进行实例化。)

……………………………………………………………………………………………………………………………………………

编译时无报错,而运行时产生如下报错:

也即可能是数组空间不足导致此错误,将数组存储空间进行扩充,将工程中的代码进行如下修改后则不再出现此错误(YC):

……………………………………………………………………………………………………………………………………………

C++中定时器的使用方法记录:

② 定时器回调函数的定义:(.c和.h文件中都应该有)

C++定时器方面的参考网址:

……………………………………………………………………………………………………………………………………………

C++中测量某一段代码的运行时间的方法:

1.如果只是要计算程序运行的时间,不需要那么复杂。

……………………………………………………………………………………………………………………………………………

C++建立并写入.txt文件的方法:

//(以下一一种建立并写入.txt文件的方法——例程原码。)

……………………………………………………………………………………………………………………………………………

C++创建文件夹和子文件夹的方法:

上面网址中,通过测试的两段代码如下(分别对应两种方法)(YC):

……………………………………………………………………………………………………………………………………………

上述网址中的推荐方法(已通过测试,YC ):

2.传给未分配内存的指针.

//修改ch指向的值等于修改cstr里面的值.

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

VS2012中32位和64位之间编译的转换问题:

……………………………………………………………………………………………………………………………………………

根据调试经验(YC),如果出现上图所示的问题,有可能是工程所在的文件路径有问题(有可能是因为路径过长),将工程复制到桌面上,则有可能避免该问题。

也有可能是控件的配置问题。(YC)

→其实这个有可能是你多加了一个你没用到的控件 变量已经添加 但你仅仅删掉了控件 却没有删掉里边的声明(YC)

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

调试通过代码(关键部分截取):(YC)

注意:前面别忘了加事件响应:

……………………………………………………………………………………………………………………………………………

(↑实现了ASCII码格式的串口通讯,测试通过 YC)

(↑《串口调试助手源程序及编程详细过程(一)》《串口调试助手源程序及编程详细过程(二)》)

可结合网址1实现基本的串口通讯,并在此基础上借鉴网址2的后半部分《串口调试助手源程序及编程详细过程(二)》实现HEX格式的通讯。YC

……………………………………………………………………………………………………………………………………………

  • 项目|属性|C/C++|常规|调试信息格式:程序数据库(/Zi)
  • 项目|属性|配置属性-链接器-常规-“启用增量链接选择

合理的划分模块,减少link的时间外,充分利用多核编译也很重要。

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

电脑左下角开始→所有程序→启动(右键)→打开,将要运行的程序exe或快捷方式拖入其中即可。

→YC:经测试,该方法可行。

……………………………………………………………………………………………………………………………………………

解决方法:将对应函数添加到初始化函数OnInitDialog()中:

……………………………………………………………………………………………………………………………………………

在执行鼠标滚轮滚动之前,确保运行了以下代码:

鼠标滚轮消息似乎只会发给当前获得焦点的窗口,所以当子窗体没有焦点时是收不到滚轮消息的,收到消息的可能是父窗口。

……………………………………………………………………………………………………………………………………………

工程的主对话框的Dlg.cpp中添加如下代码(蓝色选中部分):

……………………………………………………………………………………………………………………………………………

经过测试的代码:(YC

Control控件中显示图像区域的大小】

Control控件中显示图像区域的大小】

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

注:经调试,“在静态库中使用MFC”的方法会使程序在编译的时候产生很多错误、难以解决,因此不采用此方法。以下是测试通过的方法(YC):

不修改“在静态库中使用MFC”等配置(也即使用默认配置),对编译生成的.exe文件,如果想让它在其它电脑上运行,需要:

事先需要对要运行.exe的电脑安装“VC6.0”和“微软常用运行库合集”(参考下图)

和工程相关的dll文件,应该和visualstudio生成的.exe文件在同一目录下。

(长沙项目程序的相关dll文件已经存储在文件夹“exe文件在其它电脑上运行相关”中。YC)

①目标电脑最好是WIN7 64位操作系统

②控制电机所用的串口号:程序中默认是串口6(COM6),在目标电脑上需要事先将串口号配置/修改成6

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

在初始化RADIO时添加如下代码:

还是第三种方法吃香呵。这也是访问控件的常用方法之一。

经测试方法一可以使用,在OnInitDialog()初始化函数里加入上述代码即可。(YC)

…………………………………………………………………………………………………………………………………………

参考网址:(MFC——文件打开和保存对话框(CFileDialog))

……………………………………………………………………………………………………………………………………………

对于长沙项目的相关程序,通过排查(),这个问题主要是由于主对话框中的屏幕尺寸变化响应函数导致的,也即WM_SIZE和Onsize。去掉屏幕尺寸变化响应,则该问题得以解决。

究其原因,是由于exe已开始运行的时候,就触发了WM_SIZE,从而导致程序故障。

……………………………………………………………………………………………………………………………………………

看设备管理器中的上述是否有感叹号,有的话,对它禁用、再启动。

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

3.   按CTRL+D,保证同一组内的radio的tab序号是连续的;调整tab序号的方式是:鼠标点击数字,比如先点3,然后点7,则3和7会交换,即radio1变为7,radio5变为3;

5. 第4步完成后,在窗体头文件中可以看到

·以上内容参考自网址:

……………………………………………………………………………………………………………………………………………

YC:经测试,可使用如下代码:

//↓弹出报警对话框,并在片刻之后自动关闭该对话框。

//所弹出的对话框为模态对话框。

SetTimer(1, 1500, NULL);//启动定时器,一定时间间隔之后,自动关闭所弹出的对话框。

//↑弹出报警对话框,并在片刻之后自动关闭该对话框。

对应的定时器响应函数:

上述代码源于该网址中的“方法二”。

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

所采用的是上述网址中的方法二(),重载了三个函数。所编程序中的具体代码(YC):

-----功能:使MFC对话框不响应标题栏双击

//-----功能:使标题栏的窗体不能被鼠标拖动,固定在当前屏幕中的位置:

-----功能:屏蔽在标题栏点击鼠标右键事件。

//↓使MFC对话框不响应界面双击等操作

//↑使MFC对话框不响应界面双击等操作

……………………………………………………………………………………………………………………………………………

上述方法2通过了实际测试,可满足功能。

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………

}

之前想给VS Code搞个C++编译环境,结果看了网上很多教程最后搞得一团糟,最近把参照官方教程终于搞了个差不多。

首先准备好VS Code,然后再插件商店安装C/C++插件()。

到此VSCode配置完成。

现在可以写一个程序测试以下,根据前面的配置文件所指定的,这个源文件名应该说是helloworld.cpp。


此时控制台会一闪而过,然后调试停在第一行:
再按F5就可以继续了。

本文由 橙叶博客 作者: 发表,转载请注明来源!

文章:272 画廊:7 视频:11
}

我要回帖

更多关于 vs2019如何调试cpp文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信