C로 작성된 특정 응용 프로그램에서 메모리가 효율적이어야합니다. 통계를 수집하고 있으므로 메모리 소비를 최소화하기 위해 런타임에 특정 필드를 "켜고 끌 수"있어야합니다. 매크로를 사용하여 조건부 구조체 필드를 정의 할 수 있다는 것을 알고 있지만 실수가 아닌 경우 컴파일 타임입니다. 런타임시 C에서이 작업을 수행 할 수 있습니까?C에서 구조체의 런타임 조건부 필드
예 :
입력 :
collect (A,B)
이런 구조체 될 것이다
struct statistics{
double A;
double B;
};
하지만 입력 :
collect (A,B,C)
같은 구조체가 발생할 것 this :
struct statistics{
double A;
double B;
double C;
};
동적 할당 및 구조를 사용해야합니다. – OldProgrammer
그 경우 struct가 아닌 각 레코드에 대해 동적 크기의 배열을 사용하는 것이 좋습니다 (모든 필드가 동일한 유형, 즉 'double'입니까?). 또는 AoS에서 SoA로 전환 할 수 있습니다. 각 배열은 포인터이며 필요한 경우에만 할당됩니다. –
오른쪽, (그들은 모두 두 배가 아니지만 대부분 두 배와 정수입니다); 그러나 포인터는 4 바이트 자체이므로이 필드 각각 대신 포인터를 할당 할 수도 있고 할당하지 않을 수도 있습니다. 그러나 여전히 메모리의 동일한 순서를 중심으로합니다. 그것보다 더 잘할 수 있습니까? – user2662165