【发布时间】:2021-03-24 02:36:18
【问题描述】:
我第一次在 Visual Studio 上运行我的代码。在弹出的数百个警告中,有两个被视为错误,它们在 time.h 中指出了一些问题。
第一个警告是
Warning C4820 '_timespec64': '4' bytes padding added after data member '_timespec64::tv_nsec'
在time.h中指向如下代码
struct _timespec64
{
__time64_t tv_sec;
long tv_nsec;
};
第二个警告是
Warning C4820 'timespec': '4' bytes padding added after data member 'timespec::tv_nsec'
它指向下面的时间部分。h
#ifndef _CRT_NO_TIME_T
struct timespec
{
time_t tv_sec; // Seconds - >= 0
long tv_nsec; // Nanoseconds - [0, 999999999]
};
#endif
这个填充指的是什么?如何解决?
【问题讨论】:
-
MSVC 附带的标准头文件在警告级别 4 不干净。尝试使用
/W4或/Wall进行编译基本上是没有希望的。 -
我会担心成百上千的警告,就像担心两个被视为错误一样。即使所有这些警告都是误报,如果在混乱中突然出现一个合理的警告,你将如何发现它?
-
其他警告似乎与我无关
-
能否提供minimal reproducible example,您正在使用的Visual Studio 版本,以及解决方案配置和平台?我使用的是 16.8.3 版,无论我选择何种设置,都看不到这些警告。