C / C ++ 전처리기를 사용하여 소스 파일 내의 행을 매크로 또는 컴파일 가능한 시간 값으로 계산할 수 있습니까? 예 나는 대체 할 수있는 MAGIC1, MAGIC2그리고 MAGIC3사용할 때 다음에, 어떻게 든 값 4를 얻을 MAGIC3?
MAGIC1 // can be placed wherever you like before the relevant
// lines - either right before them, or in global scope etc.
foo(); MAGIC2
bar(); MAGIC2
baz(); MAGIC2
quux(); MAGIC2
// ... possibly a bunch of code here; not guaranteed to be in same scope ...
MAGIC3
노트:
- 전 처리기 기능에 대한 컴파일러 별 확장은 허용되지만 바람직하지 않습니다.
- 이것이 C와 대조적으로 C ++의 일부의 도움으로 만 가능하다면, 그것은 수용 가능하지만 바람직하지 않습니다 (즉, C에서 작동하는 것을 원합니다).
- 분명히 이것은 외부 프로세서 스크립트를 통해 소스 파일을 실행하여 수행 할 수 있지만 이것이 내가 요구하는 것은 아닙니다.
__COUNTER__및 / 또는 BOOST_PP_COUNTER?
int arr[MAGIC4].
__LINE__현재 행 번호를 나타냅니다