1. 请看下面两行代码(VS2010 C++):
unsigned int DEF_BUFFER_SIZE = 1024;
char buffer[DEF_BUFFER_SIZE] = {0};
编译,报错,错误在第二行,错误是error C2057: expected constant expression。看来vc里定义一个字符串的时候,中括号里只能写一个直接数字。如果想再中括号里使用字符代号的话就只能用宏定义。 这时候如果在main函数的外边写上语句
#define DEF_BUFFER_SIZE 1024(注意DEF_BUFFER_SIZE 和1024之间没有“=”,结尾没有分号,我就犯过这样低级的错误,呵呵)
这样就不会报错了。
2. 头文件包含时引号和尖括号的区别:
双引号表示先在程序源文件所在目录查找,如果未找到则去系统默认目录查找,通常用于包含程序作者编写的头文件;
尖括号表示只在系统默认目录或者括号内的路径查找,通常用于包含系统中自带的头文件;
3.
#include "stdafx.h"
#include "Windows.h"
int _tmain(int argc, TCHAR *argv[])
{
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
BOOL ret = CreateProcess( L"calc.exe",
NULL, //argv[1], //L"D:\\小工具\\calc.exe",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi );
//WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
DWORD dwCode;
GetExitCodeProcess(pi.hProcess, &dwCode);
TerminateProcess(pi.hProcess, 0x10);
GetExitCodeProcess(pi.hProcess, &dwCode);
return 0;
}
这个实验要说明的问题有:
1)创建一个进程后,如果关闭句柄,则主进程和子进程之间将失去联系,从主进程无法暴力结束子进程。
2)创建一个进程后,主进程可以通过使用WaitForSingleObject等待子进程结束。
3)Terminate函数的第二个参数是用户想设定的某个值,之后可以调用GetExitCodeProcess获取进程的退出值是否是当初设定的退出值。
3. 程序设计当中,有除法“/”或者求模“%”运算时,一定要注意考虑除数为0的情况,否则可能会引发“除零错误”!