728x90
안녕하세요~
시험공부 하다가 책에서 이런 오류를 설명해 주길래
신기해서 작성합니다.
포인터의 크기는 플랫폼이 결정합니다.
즉, 32비트의 플랫폼이면 4바이트
64비트의 플랫폼이면 8바이트입니다.
포인터는 주소를 저장하는 변수입니다.
즉, 포인터는 다른 변수를 가리키는 변수라고 할 수 있죠.
포인터를 선언할 때 지정하는 데이터형은
포인터가 가리키는 변수의 데이터형입니다.
책에서 발생하는 에러는
Visual Studio를 사용하였기 때문에 발생하는 것으로 보입니다.
Visual Studio에서 프로젝트를 생성할 때 디폴트로 솔루션 플롯폼을
'x86'로 지정해 두기 때문에 값을 제대로 출력하지 못할 수도 있다는 에러문구 입니다.
[Error] 서식 문자열 '%d'에 'int' 형식의 인수가 필요하지만 variadic 인수의 1의 형식이 'size_t'입니다.
에러를 해결하는 방법은 2가지 있습니다.
1. 'x84'를 'x64'로 변경하기
2. 연산자를 %d가 아닌 %zd로 작성하기
#include <stdio.h>
int main(void){
int *a;
double *b;
char *c;
printf("sizeof(a) = %zd\n", sizeof(a));
printf("sizeof(b) = %zd\n", sizeof(b));
printf("sizeof(c) = %zd\n", sizeof(c));
printf("sizeof(int*) = %zd\n", sizeof(int*));
printf("sizeof(double*) = %zd\n", sizeof(double*));
printf("sizeof(char*) = %zd\n", sizeof(char*));
return 0;
}
제가 사용하는 플랫폼은 64비트이기 때문에
8비트가 찍히는 것입니다.(Dve C++사용)
산다는것 그것은 치열한 전투이다.
-로망로랑
반응형
'프로그래밍 언어 > C(C++, C#)' 카테고리의 다른 글
[Error/C] stray '\241' in program (0) | 2022.11.19 |
---|---|
[Error/C] 'for' loop initial declarations are only allowed in C99 or C11 mode (0) | 2022.10.14 |
[Error/C] expected '=', ',', ';', 'asm' or '__attribute__' before 'file' (0) | 2022.10.13 |
Dev C++ Download (0) | 2022.03.31 |