함수 포인터를 사용하여 간단한 스왑 함수를 구현하려고하지만 함수 포인터를 함수 포인터에 할당 할 때 pointersTofunctionB.c:14:6:warning: assignment from incompatible pointer type [enabled by default]
이 발생합니다. 아래는 내 코드입니다경고 : 함수 포인터를 함수 포인터에 할당 할 때 호환되지 않는 포인터 유형에서 할당 됨 [기본으로 활성화 됨]
#include <stdio.h>
void intSwap(int *a,int *b);
void charSwap(char *a,char *b);
void (*swap)(void*,void*);
int main(int argc, char const *argv[])
{
int a=20,b=15;
char c='j',d='H';
swap=&intSwap;// warning here
swap(&a,&b);
printf("%d %d\n",a,b);
swap=&charSwap;// warning here also
swap(&c,&d);
printf("%c %c\n",c,d);
return 0;
}
void intSwap(int *a,int *b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
void charSwap(char *a,char *b)
{
char temp;
temp=*a;
*a=*b;
*b=temp;
}
이 경고는 어떻게 제거합니까? 누군가 나를 도와주세요.
은'& intSwap'는 intSwap''과 같은 일에 의해로 평가 그 자체. 앰퍼샌드가 존재하는지 여부는 아무런 차이가 없습니다. –
@MichaelBurr 당신이 옳습니다, 그들은 둘 다 똑같은 것으로 평가합니다. 그러나 나는'swap = intSwap;'이라고 써야한다고 생각했다. 제 잘못을 시정 해주세요. –
저는 개인적으로 강한 감정을 가지지 않습니다. 다른 사람들이 앰퍼샌드를 사용하지 말 것을 권유하는지 확실하지 않습니다. –