아래와 같이 strcmp에 #define
과 char *
을 비교할 수 있습니까?strcmp에 #define var bad가 있습니까?
#include<stdio.h>
#include<string.h>
#define var "hello"
int main()
{
char *p ="hello";
if(strcmp(p,var)==0)
printf("same\n");
else
printf("not same\n");
return 0;
}
위의 예와 같은 char *
어떤 위험 comapre #define
이 있습니까?
이 예제는 컴파일되지 않을 것입니다. 그래서 위험이 있다고 생각합니다. – UnholySheep
아니요, 전처리 기는 리터럴로 토큰을 바꿉니다 (즉, 토큰이 리터럴과 일치하면 코드에 해당하지 않습니다).) –
@UnholySheep 이제 편집 할 것입니다 –