일부 코드 생성기를 구현할 예정입니다. 변수가 이미 선언 된 경우 C에서 어떤 방법이 있는지 알고 싶습니다. 내가 전처리 있지만 성공하지를 사용하여 뭔가를 찾으려고 노력했다변수가 C로 선언되었는지 알 수있는 방법이 있습니까?
...
감사합니다.
일부 코드 생성기를 구현할 예정입니다. 변수가 이미 선언 된 경우 C에서 어떤 방법이 있는지 알고 싶습니다. 내가 전처리 있지만 성공하지를 사용하여 뭔가를 찾으려고 노력했다변수가 C로 선언되었는지 알 수있는 방법이 있습니까?
...
감사합니다.
C는 고정적이므로 변수가 이미 선언 된 경우 "조회"할 수 없습니다. 코드 생성기를 만드는 경우 코드 줄을 읽고 선언 된 내용을 확인하십시오.
아니요. 코드를 사용하려고 시도하고 코드가 컴파일되는지 확인하지 않는 한 아닙니다.
모든 변수 파일의 맨 위에 표준 #ifdef
과 같은 일종의 특정 변수에 대한 전 처리기로 해킹하려고 시도 할 수 있습니다. 그것은 전처리 기가 컴파일러가 실행되기 전에 실행되기 때문에 범위를 인식하지 못합니다.
C는 그렇게 동적 인 언어가 아닙니다.
동의하지만 CPP 트릭을 찾을 수 없습니다 ... – LB40
아니요, 없습니다. 그렇게하는 것은 컴파일러가하는 일 중 많은 부분을 차지합니다.
변수 이름을 고유하게 만드는 일반적인 방법은 가능하면 매우 적은 변수 이름을 사용하는 것입니다 (가능한 경우 줄 번호와 함께 사용). 뭔가 같은 것
// beware, brain-compile code ahead!
a_rather_unlikely_variable_name_by_sbi_ ## __LINE__
발전기가 생성 한 변수 또는 사용자가 입력 한 내용이 있습니까? 직접 변수를 생성 할 때 변수와 함께 전 처리기 토큰을 내보내고 나중에 해당 토큰이 있는지 확인할 수 있습니다.
저는 꽤 늦었습니다. 잘 알고있는 쉬운 방법은 텍스트 파일입니다. 변수 이름을 선언 할 때 바로 파일에 쓰고 나중에 이름이 기록되는지 확인하십시오. "DEF" "IF_DEF"및 "IF_NOT_DEF"의 3 가지 매크로 만 만들면 모양이 좋아집니다. C로는 검색 할 수 없지만 파일 내부를 검색 할 수 있습니다. 하지만 약간의 기억이 필요합니다.
사실 나는 여러 버전의 파일을 생성하고 있으며 전체 패치를 생성하고 있습니다. 이 패치는 매크로를 삽입하고 일부 매크로는 선언으로 확장되므로 패치 조합이 매우 까다로울 수 있으므로 생성 시간에 모든 것을 알 수 없습니다 – LB40