1
m4 매크로에 문제가 있습니다. 매크로m4가 로컬 변수를 구문 분석하지 않습니다.
define(BARRIER, `
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&$1,$2,$3);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&$1,$2,$3);
#endif
')
하고 내 .C 파일에 내가 Global->start
및 P
은 전역 및 myNum에 지역 변수입니다
BARRIER(Global->start, P, MyNum)
있습니다.
하지만 출력 파일에
m4 macrosfile.m4 sourcefile > outputfile
을 실행할 때이있다 : 내 매크로, 아니면 그냥 제한 문제
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&Global->start,P,);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&Global->start,P,);
뭔가?
미리 감사드립니다.
'm4'는 C? 전처리기로 사용됩니다. 내 지식 C는 buildin 전처리기를 가지고 있지 않습니까? -) –
@JensGustedt 그렇습니다. 그런데이 방법을 사용하면 다른 프로그램 프로젝트에서 같은 매크로를 재사용 할 수 있습니다. 또한 나는 그런 식으로해야한다. ... – Manos
backticks/apostrophe quoting은 실제로 좋은 선택이다. 왜냐하면 backticks는 코드에 나타나기 쉽지 않기 때문이다. 결과적으로 m4를 사용하여 변경없이 소스 코드를 변환 할 수 있습니다. (물론 다른 인용 부호가 필요한 경우 m4가 허용합니다.) –