반응형

C 27

이 오류는 무엇을 의미합니까? 'somefile.c:200: error: 1032바이트의 프레임 크기가 1024바이트보다 큽니다.'

이 오류는 무엇을 의미합니까? 'somefile.c:200: error: 1032바이트의 프레임 크기가 1024바이트보다 큽니다.' 만드는 동안 다음과 같은 오류가 발생합니다. cc1: warnings being treated as errors somefile.c:200: error: the frame size of 1032 bytes is larger than 1024 bytes 선 번호는 다음과 같은 기호가 있는 c 함수의 닫힘 괄호를 가리킵니다. void trace(SomeEnum1 p1, SomeEnum2 p2, char* format, ...) { char strBuffer[1024]; ... 기능은 버퍼에 몇 가지를 인쇄합니다. 이런 유형의 오류가 일반적으로 무엇을 의미하는지 아는 사람?이 루..

programing 2023.11.06

길이 또는 정수의 최대값을 정의하는 상수가 있습니까?

길이 또는 정수의 최대값을 정의하는 상수가 있습니까? 자바에서는 Long의 최대값에 대한 상수가 있습니다.예: long minBillId = Long.MAX_VALUE Obj-C에서 long 또는 int의 최대값에 대한 상수가 있습니까?수입하는 경우limits.h전화가능합니다LONG_MAX 참고로 이 사이트에서는 다음과 같은 모든 유형에 대해 최대치를 얻는 방법을 보여줍니다. #import // ... NSLog(@"CHAR_MIN: %c", CHAR_MIN); NSLog(@"CHAR_MAX: %c", CHAR_MAX); NSLog(@"SHRT_MIN: %hi", SHRT_MIN); // signed short int NSLog(@"SHRT_MAX: %hi", SHRT_MAX); NSLog(@"INT_M..

programing 2023.11.06

다른 함수에 void(*) 포인터 사용

다른 함수에 void(*) 포인터 사용 a를 통해 다양한 인수 목록을 가진 함수에 대한 포인터에 접근하는 것이 합법입니까?void (*f)()포인터?아래 프로그램은 gcc로 경고 없이 컴파일되어 정상적으로 실행되는 것으로 보이는데, 합법적인 C인가요? #include #include typedef void funp(); static void funcall( funp* F, int args, double x) { switch( args) { case 0: F(); break; case 1: F(x); break; } } static void fun0( void) { printf( "zero\n"); } static void fun1( double x) { printf( "one\t%f\n", x); } i..

programing 2023.11.06

ANSI(C89/90) C에서 바이트를 나타내는 데 사용할 유형?

ANSI(C89/90) C에서 바이트를 나타내는 데 사용할 유형? ANSI (C89/90) C에서 바이트를 나타내는 표준 불만 방법이 있습니까?대부분의 경우 문자가 바이트가 되는 경우가 많다는 것을 알고 있지만, 제가 알기로는 이러한 경우가 보장되지 않습니다.또한 C99 표준에는 stdint.h가 있습니다만, C99 이전에는 무엇을 사용했습니까? 구체적으로 8비트와 '바이트'((x) == 1의 크기) 모두 궁금합니다.char항상 바이트이지만 항상 옥텟은 아닙니다.바이트는 주소 지정 가능한 최소 메모리 단위(대부분의 정의에서)이며 옥텟은 8비트 메모리 단위입니다. 그것은,sizeof(char)모든 구현에 대해 항상 1이지만,CHAR_BIT거시적으로 보다limits.h는 플랫폼의 바이트 크기를 정의하며 항상..

programing 2023.11.06

C에서 곱슬곱슬한 교정기의 이상한 사용

C에서 곱슬곱슬한 교정기의 이상한 사용 간단한 질문 죄송합니다만, 저는 코어 오디오에 관한 책을 읽으며 휴가 중이고, C나 Objective C 책은 가지고 있지 않습니다. 이 변수 정의에서 곱슬곱슬한 가새는 무엇을 합니까? MyRecorder recorder = {0}; 가정하에MyRecorder가struct, 이것은 모든 구성원이 각각의 0을 표현하도록 설정합니다. (0정수의 경우,NULL(Pointers 등). 사실 이것은 다음과 같은 다른 모든 데이터 유형에서도 작동합니다.int,double, 포인터, 배열, 중첩 구조, ..., 상상할 수 있는 모든 것(이를 지적해주신 pmg 감사합니다!) 업데이트: C99의 최종 초안을 인용하여 위 링크된 웹사이트에서 발췌한 인용문: [6.7.8.21] 대괄호..

programing 2023.11.06

INET6_ADDRSTRLEN이 C에서 46으로 정의된 이유는 무엇입니까?

INET6_ADDRSTRLEN이 C에서 46으로 정의된 이유는 무엇입니까? 다음 프로그램과 그 출력은 다음을 보여줍니다.INET_ADDRSTRLEN다음과 같이 정의됩니다.16그리고.INET6_ADDRSTRLEN다음과 같이 정의됩니다.46. 여기 프로그램이 있습니다. #include #include int main() { printf("%d\n", INET_ADDRSTRLEN); printf("%d\n", INET6_ADDRSTRLEN); return 0; } 여기 출력이 있습니다. 16 46 그 이유를 이해할 수 있습니다.INET_ADDRSTRLEN필요한16. IPv4 주소의 가능한 최대 문자열 표현은 15바이트를 소비합니다."255.255.255.255". 따라서 이러한 IP 주소를 종단 null 문자..

programing 2023.11.01

C: 다자리 숫자를 별도의 변수로 분할하는 방법은?

C: 다자리 숫자를 별도의 변수로 분할하는 방법은? 내가 C로 여러 자리 정수를 가지고 있다고 치자.한 자리 정수로 나누고 싶습니다. 123로 변할 것입니다.1,2,그리고.3. 특히 정수가 몇 자리인지 모르는 경우에는 어떻게 해야 합니까?int value = 123; while (value > 0) { int digit = value % 10; // do something with digit value /= 10; } 먼저 숫자를 세어 봅니다. unsigned int count(unsigned int i) { unsigned int ret=1; while (i/=10) ret++; return ret; } 그런 다음 배열로 저장할 수 있습니다. unsigned int num=123; //for examp..

programing 2023.11.01

비교 및 스왑 작동 방식

비교 및 스왑 작동 방식 비교 및 스왑이 원자성을 보장한다는 게시물을 꽤 읽어 보았지만 여전히 어떻게 하는지 알 수 없습니다.비교 및 스왑을 위한 일반 의사 코드는 다음과 같습니다. int CAS(int *ptr,int oldvalue,int newvalue) { int temp = *ptr; if(*ptr == oldvalue) *ptr = newvalue return temp; } 이것이 어떻게 원자성을 보장합니까?예를 들어, 만약 내가 이것을 사용해서 뮤텍스를 구현한다면, void lock(int *mutex) { while(!CAS(mutex, 0 , 1)); } 이것은 어떻게 두 개의 스레드가 동시에 뮤텍스를 획득하는 것을 막습니까?어떤 조언이라도 해주시면 정말 감사하겠습니다."일반 의사 코드"..

programing 2023.11.01

(및 배열)의 크기는 얼마나 됩니까?

(및 배열)의 크기는 얼마나 됩니까? 다음 질문을 따릅니다.어레이의 주소가 C의 값과 동일한 이유는 무엇입니까? #include #define N 10 char str2[N]={"Hello"}; int main(){ printf("sizeof(str2): %d bytes\n", sizeof(str2)); printf("sizeof(&str2): %d bytes\n", sizeof(&str2)); return 0; } 출력: sizeof(str2): 10 bytes sizeof(&str2): 4 bytes 나는 그것을 알고 있습니다.str2alone은 배열된 첫번째 요소의 주소입니다.str2. 그리고 언제str2의 논쟁입니다.sizeof전체 배열 str2의 크기를 반환합니다. 외에 .&str2또한 arr의..

programing 2023.10.27

쓰기가 버퍼에 지속적으로 4K 바이트를 남기는 이유는 무엇입니까?

쓰기가 버퍼에 지속적으로 4K 바이트를 남기는 이유는 무엇입니까? 기본적으로 다음과 같은 코드가 있습니다. int fileWrite(int file, void * pBuffer, size_t size) { size_t bytesWritten = (size_t)write( file, pBuffer, size ) ; if (bytesWritten != size) { return -1; } return 0; } 크기가 1GB일 경우 작동하지만 ~2GB일 경우 4K 바이트가 일정하게 남아있습니다.write를 loop에 싸서 버퍼를 위로 이동시키면 고칠 수 있는데 왜 항상 고장이 나는지 궁금합니다. 예를 들어 크기가 2147483648인 경우 write는 2147479552만 기록하고 4096은 기록하지 않습니다..

programing 2023.10.27
반응형