게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
현재 c언어는 예전버젼과 완벽하게 호환이 않되나요?
게시물ID : programmer_12195짧은주소 복사하기
작성자 : ㅜ_ㅠ
추천 : 0
조회수 : 499회
댓글수 : 3개
등록시간 : 2015/07/19 20:07:19
제가 아래의 코드를 컴파일했는데 에러가 나네요.
'++' needs l-value
  cannot convert from 'void *' to 'char *'

그런데 이 예제자체가 예전에 있던 turboc정복이라는 교재에 있는 예문인데 그때에는 C언어가 C90형식으로 되어있는거 같은데요
그런데 이 소스에는 turboc에만 있는 함수도 전혀 없는데 code blocks나 VS2010에서 컴파일하면 에러가 나는 걸 보면 표준인 C99와 호환이 되지 않는거 같은데
사용하는 함수가 같아도 예전의 C언어 표준과 최근의 C언어 표준은 서로 호환이 잘 안되나요?

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

#define printexprc(expr) printf("%16s==%c\n",#expr,expr)
#define printexprs(expr) printf("%16s==\"%s\"\n",#expr,expr)
#define printexpri(expr) printf("%16s==%d\n",#expr,expr)

void main(void)
{
void *pv;
char *ps,s[]="ABCDEFG";
int *px,x[]={1234,2345,3456};
ps=s;
px=x;
pv=ps;

printexprs(ps);
printexprs((char*) pv);
printexprc(*ps);
printexprc(*(char*)pv);
((char*)pv)++;
ps=pv;
printexprs((char*)pv);
printexprs(ps);
pv=px;
printexpri(*px);
printexpri(*(int*)pv);
printexpri(*(px+1));
printexpri(*((int*)pv+1));
printexpri(px[2]);
printexpri(((int*)pv)[2]);
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호