2014-04-28 1 views
0

경고 : '방어 적이기'의 인수 2를 통과은 [기본적으로 활성화] 캐스트어떻게 C 경고를 해결할 수 : 캐스트없이 정수에서 포인터?

uint8 InterruptLatency; 
char buf[256]; 
int kernelinterrupt time() 
{ 
    fscanf(fp, "%"SCNu8"\n", &InterruptLatency); // I am reading the data from kernel which is not shown here 
    memcpy(buf, InterruptLatency, sizeof(InterruptLatency)); // warning here as above 

    // after storing it in buffer I am sending the data from but to another layer 
} 

답변

2

memcpy() 함수는 두 개의 포인터를 기대하지 않고 정수의 포인터를 만들지 만, InterruptLatency는 8 비트 정수입니다. 실제의 물체의 크기를 고려시에는 괄호 sizeof 필요 없는지

memcpy(buf, &InterruptLatency, sizeof InterruptLatency); 
      ^
      | 
     address-of 
     operator 

참고

용액 변수의 어드레스를 취한다. sizeof은 기능이 아니기 때문입니다.

같은 바이트 배열로 단일 바이트를 복사하는 데 memcpy()을 사용하면 "실제"C 코드에서 절대로 발생하지 않습니다. 나는 단지 다음과 같이한다 :

buf[0] = InterruptLatency; 
관련 문제