반응형
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
경매하는 개발자
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
전체 방문자
오늘
어제
  • 분류 전체보기 (329)
    • IT (128)
      • 아두이노 (6)
      • C C++ (17)
      • C C++ 컴파일 에러 (3)
      • LINUX (3)
      • Git (1)
      • OpenGL (0)
      • IT 상식 (38)
      • EXCEL & VBA (9)
      • 정보처리기사 (20)
      • 무작정 웹사이트 만들기 (6)
      • 포토샵 (3)
      • 파이썬 & vscode (16)
      • 머신러닝 & 인공지능 & 데이터사이언스 (5)
    • 부동산 (91)
      • 부동산일반 (31)
      • 세금 (6)
      • 경매 (46)
      • 법, 소송 (8)
    • 개인사업자 (43)
      • 할 일 (11)
      • 꿀팁 (9)
      • 세금 (14)
      • 지원사업 (8)
    • 독후감 (25)
      • 독후감 (25)
    • 경제 (4)
      • 거시경제 (4)
    • Tistory (34)
      • 티스토리 (23)
      • 애드센스 (11)
    • 기타 (4)
      • 에세이 (2)
      • 퇴사준비 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 애드센스
  • 온비드공동인증서
  • 개인사업자
  • 부의추월차선독후감
  • 부의추월차선줄거리
  • 부의추월차선요약
  • 티스토리애드센스
  • 온비드공인인증서
  • 온비드공매
  • 일반과세자
  • 전자세금계산서
  • 공매
  • 부의추월차선
  • 전입신고
  • 부의추월차선서평
  • 세금계산서
  • 경매
  • 부의추월차선리뷰
  • 확정일자
  • 부가가치세

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널

경매하는 개발자

[C/C++] C2440 : double 에서 'double *' 으(로) 변환할 수 없습니다
IT/C C++ 컴파일 에러

[C/C++] C2440 : double 에서 'double *' 으(로) 변환할 수 없습니다

2022. 5. 20. 10:14
반응형

[C/C++] C2440 : double 에서 'double *' 으(로) 변환할 수 없습니다

이번 시간은 C2440 캐스팅 에러에 대해 알아보고자 한다.

반응형

 


현상

- 필자의 소스코드를 간단하게 정리하면 아래와 같다. 위에 함수 사용을 선언하고 메인함수 이후 함수 값을 리턴하는 형태인데, 코드를 돌려보면 C2440 : double → double * 로 변환할 수 없다는 에러가 뜬다.

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

double optmach(double, double double[]);  // (1)

void main()
{
	double a = 1.0;
    double b = 2.0;
    double c[5];
    
    c[0] = 0.0;
    c[1] = 0.1;
    c[2] = 0.2;
    c[3] = 0.3;
    c[4] = 0.4;
    
    double result = optmath(a, b, c);  // (2)
	system("pause")
}

double optmach(double a, double b, double c[])  // (3)
{
	return(a+b+c[0]+c[1]+c[2]+c[3]+c[4]);
}

 

- 원인은 매개변수로 받는 c가 포인터 배열로 묵시적 캐스팅이 되었기 때문으로 보인다. 함수를 실행하는 (2)에서 매개변수로 받는 c가 배열이지만 함수를 선언하는 (1)에 마우스를 올려보니 배열부분이 포인터배열(double*)로 캐스팅 된 것을 확인하였다.

- 정리하면, 함수실행부(2)에서는 "나는 배열 c를 매개변수로 받았음", 함수선언부(1,3)에서는 "어 나는 포인터 배열로 받아야하는데, 배열 c를 받았네? (double) c -> (pointer double) *c로 캐스팅해야겠다!" 라고 판단하여 묵시적 캐스팅을 수행하였고, 주소값이 아닌 실제값이 매개변수로 들어오니 C2440 에러를 리턴하게 된 것으로 보인다.

반응형

 

 

 

해결

- 함수선언부(1)에 (3)에서 정의한 매개변수명을 아래와 같이 똑같이 작성하니 문제가 해결되었다.

- 함수에서 배열로 받을때 포인터배열(주소값)이 아닌 배열로 받아야한다고 명시적으로 선언하니 올바르게 링킹이 된 듯 하다.

반응형

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

double optmach(double a, double b, double c[])  // (1) : (3)과 동일하게 작성

void main()
{
	double a = 1.0;
    double b = 2.0;
    double c[5];
    
    c[0] = 0.0;
    c[1] = 0.1;
    c[2] = 0.2;
    c[3] = 0.3;
    c[4] = 0.4;
    
    double result = optmath(a, b, c);  // (2)
	system("pause")
}

double optmach(double a, double b, double c[])  // (3)
{
	return(a+b+c[0]+c[1]+c[2]+c[3]+c[4]);
}​
반응형

'IT > C C++ 컴파일 에러' 카테고리의 다른 글

[C/C++ 에러] C2375 : '~~': 재정의. 링크가 다릅니다. 오류  (0) 2023.07.23
[C/C++ 에러] Visual Studio의 0xC00000FD: Stack overflow 오류  (0) 2021.02.22

    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널

    'IT/C C++ 컴파일 에러' 카테고리의 다른 글
    • [C/C++ 에러] C2375 : '~~': 재정의. 링크가 다릅니다. 오류
    • [C/C++ 에러] Visual Studio의 0xC00000FD: Stack overflow 오류
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널
    크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널입니다.

    티스토리툴바