C tips(持续更新中)

目录

前言

1. C编程中避免控制台程序一闪而过

2. 引用文件路径

3. Error C4996: ‘strcpy’: This function or variable may be unsafe.的处理方法

4. VS2017 找不到Windows SDK版本10.0.18362.0的解决办法

5. C函数设置默认参数

6. 使用pi定义

7. C++库函数查询


前言

       在学习工作中,信手记录一些C代码编写的小技巧,以备查阅,也用以共勉。

1. C编程中避免控制台程序一闪而过

       在非大数据量处理时,控制台方式运行C代码时,常常由于执行速度过快,运行窗口会一闪而过,导致无法看到控制台的输出信息,此时,一般通过在main函数中,return之前,加入”system(“pause”);”即可在程序运行结束后暂停,这样就可以清楚地看到屏幕输出结果啦。

2. 引用文件路径

       VS环境中,用于路径时,如下:

strcpy(file_name, "G:\NILM\code\BOCD_input\input_data\laptop_data.csv");

       会报出:

warning C4129: “N” : 不可识别的字符转义序列

warning C4129: “c” : 不可识别的字符转义序列

warning C4129: “B” : 不可识别的字符转义序列

warning C4129: “i” : 不可识别的字符转义序列

warning C4129: “l” : 不可识别的字符转义序列

       将路径中的“\”改为”\\”即可,如下。

strcpy(file_name, "G:\\NILM\\code\\BOCD_input\\input_data\\laptop_data.csv");

3. Error C4996: ‘strcpy’: This function or variable may be unsafe.的处理方法

       项目属性->预处理定义中,加入” _CRT_SECURE_NO_WARNINGS”即可,如下:

C tips(持续更新中)_第1张图片

4. VS2017 找不到Windows SDK版本10.0.18362.0的解决办法

       明明可以正常运行的版本,当放在另一台机器上编译时,同样是VS2017,却报出“找不到Windows SDK版本10.0.18362.0”的错误,同时还有一堆“E1696 无法打开源文件stdio.h/stdlib.h/…”、”E0020未定义标识符printf”等错误。

       解决方法如下:选中当前项目->右键->属性:

C tips(持续更新中)_第2张图片

       确定后,再次编译,上述所有报错全部消失,解决问题。

       推测,下拉菜单中的可选项“10.0.17763.0“应该是当前VS2017对应的Windows SDK版本,而”10.0.18362.0“是原来可成功运行机器上对应的版本号。虽然同为VS2017,估计两者版本还是有一定差别,比如说子版本号不同之类的。  

5. C函数设置默认参数

       C++中允许为函数提供默认参数,又名缺省参数。

       在同时有函数声明(原型)和函数定义时,默认参数可以放在函数声明或者定义中,但只能放在二者之一,如果函数声明和定义中均给出缺省参数时,会给出重定义的错误。

       参考代码如下:

       函数定义:

void data_dump(const char *label,int len_data, double *data, int mode = 1, int idx_start = 0)

{

}

       函数声明:

void data_dump(const char *label, int len_data, double *data, int mode, int idx_start);

       这里,在函数定义中给出了接口参数mode和idx_start的缺省参数值,分别为1和0,而在函数声明中不需要再给出缺省参数值。

6. 使用pi定义

       在math.h中已经存在pi的定义,宏定义的名字为M_PI,但不能直接使用,需要先预定义_USE_MATH_DEFINES才行,参考如下:

7. C++库函数查询

       参考网页:Reference - C++ Reference

       包含所有库(如math.h、stdio.h等)、各库下的函数、各函数的说明及其使用示例。

你可能感兴趣的:(C,c语言,visualstudio)