매크로 정의를 매크로 파일과 본문의 두 문자열로 구문 분석합니다. 예를 들어 여기 내 메이크 파일에서 매크로 정의 라인은 다음과 같습니다C 프로그래밍 문자열 파싱
매크로-1 = 몸-1
내 코드는 버스 오류/세그먼트 오류를 생성합니다.
static void parse_macro_def(const char* line)
{
char* m_name;
int name_pos = 0;
int i = 0;
while(line[i++] != '=') //iterate until an equal sign is found
{
if(!isspace(line[i])) //copy characters to m_name unless the character is whitespace
{
m_name[name_pos++] = line[i];
}
}
}
m_name[name_pos] = '\0';
m_name 모든 도움을 매크로-1 감사로 설정해야합니다!
줄에'= '기호가 없으면 세그먼트 화 오류가 발생할 수 있습니다. – dreamlax
또한'm_name'을위한 공간을 할당하지 않습니다. 포인터 값은 불확정합니다. 즉, 가리 키기를 원하지 않는 곳을 가리 킵니다. – dreamlax
'strtok()'을 사용하면 더 쉽게 사용할 수 있습니다. –