일부 루프를 풀어서 일부 코드를 최적화하고 있습니다 (예, 컴파일러를 사용하여 컴파일러를 선택해야 컴파일러를 선택하지 않을 것입니다). 미래의 일부 편집으로 인해 데이터 크기가 변경되는 경우 코드가 우아하게 저하됩니다. 같은매크로에 해당하는 C 크기의 매크로
뭔가 :
typedef struct {
uint32_t alpha;
uint32_t two;
uint32_t iii;
} Entry;
/*...*/
uint8_t * bytes = (uint8_t *) entry;
#define PROCESS_ENTRY(i) bytes[i] ^= 1; /*...etc, etc, */
#if (sizeof(Entry) == 12)
PROCESS_ENTRY(0);PROCESS_ENTRY(1);PROCESS_ENTRY(2);
PROCESS_ENTRY(3);PROCESS_ENTRY(4);PROCESS_ENTRY(5);
PROCESS_ENTRY(6);PROCESS_ENTRY(7);PROCESS_ENTRY(8);
PROCESS_ENTRY(9);PROCESS_ENTRY(10);PROCESS_ENTRY(11);
#else
# warning Using non-optimized code
size_t i;
for (i = 0; i < sizeof(Entry); i++)
{
PROCESS_ENTRY(i);
}
#endif
#undef PROCESS_ENTRY
이되지 sizeof
은 사전 프로세서를 사용할 수없는 때문에, 물론, 작업 (적어도, 그 this answer가 표시 같았다 기능).
sizeof
을 C 매크로와 함께 사용할 데이터 구조를 얻는 데 사용할 수있는 간단한 방법이 있습니까? 아니면 그냥 SOL입니까?
음, sizeof() **는 ** 매크로입니다. 최소한 내장 매크로. – Havenard
sizeof는 매크로가 아니며 모양이나 형식에 관계없이 –
크기는 매크로가 아니지만 offsetof는 매크로입니다. sizeof는 더 많은 연산자입니다. –