-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathA12-0-2.cpp
More file actions
65 lines (38 loc) · 909 Bytes
/
A12-0-2.cpp
File metadata and controls
65 lines (38 loc) · 909 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Rule: A12-0-2
// Source line: 16744
// Original file: A12-0-2.cpp
// $Id: A12-0-2.cpp 305629 2018-01-29 13:29:25Z piotr.serwa $
//
#include <cstdint>
#include <cstring>
class A
{
public:
A() = default;
A(uint8_t c, uint32_t i, int8_t d, int32_t h) : c(c), i(i), d(d), h(h) {}
bool operator==(const A& rhs) const noexcept
{
return c==rhs.c && i==rhs.i && d==rhs.d && h==rhs.h;
}
private:
uint8_t c;
uint32_t i;
int8_t d;
int32_t h;
};
int main(void)
{
A noninit;
//setting field c
std::memset(&noninit, 3, 1); //non-compliant
//setting field i
std::memset(((uint8_t*)&noninit)+sizeof(uint8_t)+3, 5, 1);
//non-compliant
A init(3, 5, 7, 9); //compliant
if (noninit == init) //compliant
{}
if (0 == std::memcmp(&noninit, &init, sizeof(init)))
{ //non-compliant, includes padding bytes
}
return 0;
}