Debug和Release运行结果不同
bState = ReadFile(m_hCom,pRev,len,&dwBytesRev,NULL);
这段代码,Debug下dwBytesRev的返回值为正常读取到的字节数,release下的返回值为0.是什么原因
Debug和Release运行结果不同
bState = ReadFile(m_hCom,pRev,len,&dwBytesRev,NULL);
这段代码,Debug下dwBytesRev的返回值为正常读取到的字节数,release下的返回值为0.是什么原因
在您提供的代码中, ReadFile 函数用于从串口读取数据。根据您的描述,在Debug模式下, dwBytesRev 的返回值是正常读取到的字节数,但在Release模式下,返回值为0。
这种情况可能是由于编译器优化的影响导致的。在Release模式下,编译器可能对代码进行了优化,可能会对变量的初始化和使用进行一些调整。这可能导致在Release模式下, dwBytesRev 的初始值为0,并且在 ReadFile 函数调用后没有被正确地更新。
为了解决这个问题,您可以在使用 ReadFile 函数之前,将 dwBytesRev 变量显式地初始化为0,以确保它在调用 ReadFile 函数之前具有正确的初始值。例如:
DWORD dwBytesRev = 0; // 显式初始化为0
bState = ReadFile(m_hCom, pRev, len, &dwBytesRev, NULL);
通过显式初始化变量,可以确保在Release模式下, dwBytesRev 的初始值是正确的,并且能够正确地接收 ReadFile 函数返回的字节数。
请注意,编译器的优化行为可能因编译器和编译选项而异。因此,建议始终在使用变量之前显式初始化,以确保代码的可靠性和可移植性。