나는 C ++에서 일부 람다의 메모리로 작업하고 있지만 크기에 약간 의아해합니다. 내 테스트 코드는 다음과 같습니다. #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << sizeof(f) << std::endl; } 여기에서 실행할 수 있습니다 …
아래는 컴파일에 실패합니다. typedef int arr[10]; int main(void) { return sizeof arr; } sizeof.c:3: error: expected expression before ‘arr’ 하지만 내가 그것을 변경하면 sizeof(arr); 모든 것이 좋습니다. 왜?
를 sizeof반환 할 구성을 요청하는 오래된 게시물이 있습니다 0. 표준에 따라 어떤 유형이나 변수도 0의 크기를 가질 수 없다는 높은 평판 사용자의 높은 점수 답변이 있습니다. 그리고 저는 그것에 100 % 동의합니다. 그러나이 솔루션을 제시하는 새로운 답변 이 있습니다. struct ZeroMemory { int *a[0]; }; 나는 막 반대표를 던지고 댓글을 …
문맥 원래 PIC 마이크로 컨트롤러 용 8 비트 C 컴파일러를 사용하여 컴파일 된 C 코드를 포팅하고 있습니다. 부호없는 전역 변수 (예 : 오류 카운터)가 0으로 롤오버되는 것을 방지하기 위해 사용 된 일반적인 관용구는 다음과 같습니다. if(~counter) counter++; 여기서 비트 연산자는 모든 비트를 반전 시키며 명령문은 counter최대 값보다 작은 경우에만 참 …
이 std::array<T, N>::size()있지만 정적이 아니므로의 인스턴스가 필요합니다 std::array. (는 IS는 반환 값을 얻을 수있는 방법이 있습니까 N의를 std::array<T, N>배열의 인스턴스를 생성하지 않고)는? 일반 배열의 경우을 사용할 수 sizeof있었지만 이것이 sizeof(std::array<T, N>) == N * sizeof(T)사실 이라는 보장은 없습니다 .