저는 일부 레거시 C 코드를 작업 중이며 이상한 두 매크로 정의가 있습니다. 그들은 올바르게 보이지 않으며 일부 컴파일러 경고 (경고 : 쉼표 표현의 왼쪽 피연산자는 아무런 영향을 미치지 않습니다.)에 대한 책임이 있습니다. 마침내 이러한 매크로를 추적하는 데 몇 시간이 걸렸습니다.이 이상한 매크로 정의는 무엇을 의미합니까? (그리고 그것도 맞습니까?)
누구든지 올바른지 (의심 스럽습니다), 그렇지 않은 경우 어떻게 해결할 수 있습니까?
#define MAX_MEMORY_BLOCK (sizeof(size_t)==2,65535,2147483647)
#define MAX_ARRAY_SIZE (sizeof(size_t)==2,16384,1073741824)
코드에서 어떤 문맥에서 사용됩니까? –
@CodyGray 나는 그렇게 생각하지 않는다 - 그것들은 분명히 쉼표로 구분되는 값이다. 나에게 이해가 가지 않는다. –
아마도 원래의 의도는'(sizeof (size_t) == 2? a : b)'였을 것입니까? – Mat