구조체 내부에서 int16_t 변수를 나누려고합니다. 이 구조는 디스크에 유지되고 다시 부팅 할 때 다시로드됩니다. 이전 구조 나 변경된 새로운 하나구조체에서 변수를 나누기
struct details
{
int a;
int16_t var1:15;
unit16_t var2:1;
int16_t b;
}details_t;
새로운 변화 reboot.But 걸쳐 미세하고이 올바른 방식으로되어 작업이다
struct details
{
int a;
int16_t var1;
int16_t b;
} details_t
이다? 내가 무엇을 달성하고자하는 는 VAR2이 가을 설정하거나 이 지워집니다에 따라 변수 VAR1의 이중 의미를 가지고있다. 부터 var2은 이진 값을 저장하기 때문에 uint16_t로 선언했습니다. 변수를 분리하고 두 개의 다른 데이터 유형 (int16_t 및 uint16_t)으로 선언하는 것이 합법적입니까? 이것은 업데이트 후에도 원활하게 작동해야하는 기존 스택의 업데이트가 될 것입니다. 또한이 parted 변수에 set_bit 및 clear_bit 같은 커널 함수를 사용할 수 없습니다. var1 및 var2. 내 컴퓨터가 리틀 엔디안입니다
var1에서 최대 10 비트가 필요하므로 비트 단위의 연산자를 사용하여 처리 할 수 있습니다. 나머지 비트는 사물을 처리하는 데 사용할 수 있습니다. 자세한 내용 주셔서 감사합니다. 나중에 실수하는 것을 피하는 데 많은 도움이됩니다. –
@VigneshKViki 이상한 점은이 변수를 부호로 선언했다는 것입니다. 실제로 2의 보수로 서명 된 변수 인 경우 16 비트를 모두 사용합니다. 서명 된 변수가 아닌 경우 서명 된 유형을 사용하는 이유는 무엇입니까? 작업에 적합한 유형을 선택하는 것은 C에서 매우 중요합니다. – Lundin
예. var1을 -1로 설정하여 유효하지 않은 것으로 표시합니다. 따라서 서명 된 유형이 필요합니다. –