제가 아래의 코드를 컴파일했는데 에러가 나네요.
'++' 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]);
}