누군가가 설명 할 수 :정의 이진 매크로 ++ 다음과 같은 오류가 발생하는 이유
#define bla "\xA"
char a [2] = {0};
memcpy (a,bla,1); // a[0] = 0x0a <- Correct
//a[1] = bla; // '=' : cannot convert from 'const char [2]' to 'char'
감사합니다,
RM을
누군가가 설명 할 수 :정의 이진 매크로 ++ 다음과 같은 오류가 발생하는 이유
#define bla "\xA"
char a [2] = {0};
memcpy (a,bla,1); // a[0] = 0x0a <- Correct
//a[1] = bla; // '=' : cannot convert from 'const char [2]' to 'char'
감사합니다,
RM을
시도 :이 비록
#define bla '\xA'
는 memcpy
작업을 중지합니다.
유형은 다른 같습니다 [1] \ 숯불과 "입니다 xA "는 char 배열입니다.
C++과 C에서 큰 따옴표 (아무것도 포함하지 않음)로 묶인 것은 char 배열입니다.
예 char에 char [1]이 할당되어야합니까? 왜 char [2] 배열입니까? –
끝 부분에 암시 적으로 종료 영숫자 (U + 0000)가있는 문자열을 선언하므로 "x"는 x와 \ 0의 두 문자입니다. – Joey
\ xA는 단일 바이트로 취급됩니다. 즉 bla는 단일 바이트 (문자) 배열? \t \ xA는 단일 바이트로 처리됩니다. 즉 bla는 단일 바이트 (char) 배열이어야합니다. - Roman M 0 초 전 [이 주석 삭제] –
빙고. 그래서 ""사용하면 문자가 인 null로 끝나는 배열이 생성되고 사용자 인 경우 'char'처럼 처리됩니다. –
@Roman 예 - 그러나 이것은 #define –
과 아무 관련이 없습니다. 그러나'memset()'가 작동합니다. –