我知道这个问题可能与其他一些问题重复,但我想在做出这个改变之前确定我是正确的,所以无论如何我都会问这里.在一个旧项目中,我维护的是这行代码:
TCHAR m_sLogPath[MAX_LOGPATH_LEN];
Run Code Online (Sandbox Code Playgroud)
有一行代码可以初始化和使用数组,但过了一段时间后会有这样的检查:
if(NULL== m_sLogPath || _tcsicmp(m_sLogPath, trace_path)!=0){//code here}
Run Code Online (Sandbox Code Playgroud)
我想这个if语句正在检查m_sLogPath是否为空,但是NULL == m_sLogPath是一个无意义的检查,因为将数组与NULL进行比较是没有意义的.我将不得不删除NULL == m_sLogPath peice,我的问题是应该去那里检查数组是否为空?感谢所有的答案和帮助,
你是对的,如果在同一个环境中完成,这是一个毫无意义的检查.
如果将它作为参数传递给函数,则数组会衰减为指针并且它不是那么无意义.
什么应该去那里而不是检查数组是空的
好吧,阵列永远不会是空的.它将始终包含MAX_LOGPATH_LEN TCHARs.但以下可以做到这一点:
if( m_sLogPath[0] == _T('\0') || _tcsicmp(m_sLogPath, trace_path)!=0)
Run Code Online (Sandbox Code Playgroud)