CI에서 내 프로그램을 컴파일하려고 할 때 어떤 이유로 든 segfault를 얻으려고 노력했습니다.
이것은 내 main.c입니다.
#include <stdio.h>
#include "main.h"
int main()
{
printf("My name is %s and is %s\n", NAME, AGE);
return 0;
}
main.h :
#define AGE 30
#define NAME "Doelal"
다음과 같이 컴파일하려고합니다.
gcc main.c -o main
그리고 그것을 실행하면 Segmentation fault가 발생 합니다.
그 이유는 printf에 AGE 매크로를 제공 할 때 정의되지 않은 동작을 호출했기 때문입니다. 코드의 형식 문자열에는 문자열 인수가 필요하지만 실제로 AGE 매크로는 정수 상수 리터럴입니다.
두 가지 옵션이 있습니다.
"My name is %s and is %s\n"
...에
"My name is %s and is %d\n"
또는 AGE 매크로를
#define AGE 30
...에
#define AGE "30"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다