내 프로젝트의 모든 소스 파일을 따라 증가하는 매크로를 정의하려고합니다. __COUNTER__
매크로와 달리 모든 파일에 대해 별도입니다. 내가 좋아하는 클래스 뭔가 정적 멤버 변수를 사용하여 시도 :C++은 모든 파일을 따라 증가하는 카운터 매크로를 만듭니다.
class A{
static int GetNextNum() {
number++;
return number - 1;
}
private:
static int number;
};
#define NEXT_NUM A::GetNextNum()
하지만 결과는 내가 원하는 없습니다. 예를 들어 나는 (__COUNTER__
그렇듯이)이주기의 각 반복에 대해 동일한 번호를 갖고 싶어 :
for (int i = 0; i < 10; ++i) {
doSomething(NEXT_NUM)
}
내가 impemented대로이 반복 될 때마다 증가하는 동안
. 어떻게하면 필요한 것을 얻을 수 있습니까? (저는 Visual Studio를 사용하고 있지만 컴파일러 독립적 인 솔루션을 선호합니다).편집 : 여기에 요청한대로 내가하고 싶은 것과 비슷한 간단한 예가 있습니다. 나는 코드의 주어진 부분을 얼마나 많이 통과했는지를 세는 클래스를 정의하려고한다. 여기에 내가 이러한 클래스를 사용하는 것이 방법입니다 :이 또한 내가 소멸자의 추적 및 축적 기타 물건의 톤하지만 난 당신이 아이디어를 얻을이 충분 생각
for (int i = 0; i < 10; ++i) {
ExecuteCounter(location_id);
... do stuff ...
}
. 처음에는 항목이 어디에있는지를 객체를 나타내는 곳에 사용했습니다. 문자열은 __FILE__
에 __LINE__
을 붙임으로써 (따라서 위치를 고유하게 식별합니다), 느린 것으로 나타났습니다. 그래서 맵을 사용하는 대신 테이블과 인덱스를 사용하기로 결정했습니다. 이렇게하면 전반적인 복잡성에서 로그가 제거되고 성능이 크게 향상됩니다. 희망이 설명은 내 질문을 명확하게합니다.
무엇이 필요합니까? –
나는 그것이 생성 된 코드에서 각 위치에 대한 클래스의 별도 인스턴스를 만들고 있습니다. 필자는 인덱스 ('COUNTER')를 실제 개체에 매핑하는 테이블을 사용하여이 작업을 구현합니다. 그 외에 나는 호기심을 요구하고있다. –
최소한 해결해야 할 문제 *를 게시하십시오. 더 좋은 방법이되어야합니다. –