C 113

왜 매크로가 함수가 아닌 어설트일까요?

왜 매크로가 함수가 아닌 어설트일까요? 수업시간에 선생님이 그런 질문을 하셨는데, 왜 기능이 아니라 매크로인지 궁금했어요. 간단한 설명은 표준이 다음을 요구한다는 것입니다.assert매크로로서 C99 표준 초안을 보면(C11 표준 초안에서도 섹션이 동일하다고 말할 수 있습니다) 섹션.7.2 Diagnostics 패러그래프 2는 다음과 같습니다. 아사트 매크로는 실제 기능이 아닌 매크로로 구현되어야 한다.실제 함수에 액세스하기 위해 매크로 정의가 억제된 경우 동작은 정의되지 않습니다. 왜 이것이 필요한가? 국제표준의 근거-프로그래밍 언어-C에 제시된 근거는 다음과 같다. 진정한 함수로 어설트 하는 것은 어렵거나 불가능할 수 있기 때문에 매크로 형태로 제한됩니다. 별로 도움이 되지는 않지만, 그 이유를 다른..

programing 2022.08.14

C의 2가지 미완성 구현이 있습니까?

C의 2가지 미완성 구현이 있습니까? 누구나 알다시피 ISO C 표준(및 C++도 마찬가지로 C 쪽에 관심이 있지만)은 서명된 번호의 세 가지 기본 표현을 허용합니다. 2의 보완 보충. 부호/규모 위키피디아에는 60년대부터 IBM 7090에서 기호/규모를 사용하고 있으며 PDP-1, CDC 160A, UNIVAC 1100에서도 기호/규모를 사용하고 있으며 모두 60년대까지 거슬러 올라간다고 나와 있다. 이러한 대체 표현을 사용한 C(또는 기반이 되는 하드웨어)의 다른 구현이 50년 이상 전에 나온 적이 있습니까? 기계가 존재하지 않게 된 것을 표준으로 유지하는 것은 조금 낭비인 것 같습니다.가장 최근의 예는 UNIVAC에 기반한 UNISYS 2200 시리즈로 1-완료 산술입니다.1986년부터 1997년까..

programing 2022.08.13

목표 C: BOOL vs BOOL

목표 C: BOOL vs BOOL 타입' '새로운 타입'을 봤어요.BOOL )YES,NO를 참조해 주세요. 이런 타입은 거의 char와 비슷하다고 읽었어요. 테스트의 경우: NSLog(@"Size of BOOL %d", sizeof(BOOL)); NSLog(@"Size of bool %d", sizeof(bool)); 두 로그 모두 "1"로 표시되는 것을 보면 좋습니다(때로는 C++부울은 int이고 사이즈는 4입니다). 그래서 혹시 불 타입에 문제가 있는 건 아닌지 궁금해서요. 속도를 늦추지 않고 Bool을 사용할 수 있습니까?의 objc.h: #if (TARGET_OS_IPHONE && __LP64__) || TARGET_OS_WATCH typedef bool BOOL; #else typedef sig..

programing 2022.08.13

정의와 선언의 차이점은 무엇입니까?

정의와 선언의 차이점은 무엇입니까? 둘 다 무슨 뜻인지 모르겠다.선언에서는 식별자가 도입되어 유형, 객체 또는 함수 중 어느 것이든 그 유형을 설명합니다.선언은 컴파일러가 해당 식별자에 대한 참조를 받아들이기 위해 필요한 것입니다.선언은 다음과 같습니다. extern int bar; extern int g(int, int); double f(int, double); // extern can be omitted for function declarations class foo; // no extern allowed for type declarations 정의는 실제로 이 식별자를 인스턴스화/실장합니다.이러한 엔티티에 대한 참조를 링크하기 위해 링커에 필요한 것입니다.위의 선언에 대응하는 정의는 다음과 같습니..

programing 2022.08.13

UNIX의 pthread.h를 Windows에서 컴파일할 수 있습니까?

UNIX의 pthread.h를 Windows에서 컴파일할 수 있습니까? 프로그램을 컴파일하려고 하면 #include 에러가 표시됩니다. pthread.h: No such file or directory Windows 환경에서 컴파일 할 수 있습니까? 최신 MinGW에서 Vista를 사용하고 있습니다. Microsoft Windows Services for UNIX Version 3.5는 Unix 환경으로 이행해야 하므로 사용하지 않습니다.pthread.h는 스레드용 Unix/Linux(POSIX) API의 헤더입니다.Cygwin과 같은 POSIX 계층은 아마도 앱을 컴파일할 것입니다.#include . 네이티브 윈도 스레드 API는 다음 방법으로 공개됩니다.#include Linux 스레드화와는 조금 다..

programing 2022.08.13

C에서 restrict 키워드를 사용하는 규칙?

C에서 restrict 키워드를 사용하는 규칙? 언제, 언제를 사용하지 않는지를 이해하려고 합니다.restrict어떤 상황에서 가시적인 이점을 제공하는지에 대해 설명합니다. 「Demystifying The Restrict Keyword」(사용법에 관한 몇 가지 규칙이 기재되어 있습니다)를 읽은 후, 함수가 포인터를 건네받았을 때, 그 함수에 건네지는 다른 인수와 데이터가 중복(에일리어스)될 가능성을 고려해야 한다는 인상을 받습니다.지정된 기능: foo(int *a, int *b, int *c, int n) { for (int i = 0; i

programing 2022.08.12

Linux의 최대 PID

Linux의 최대 PID 응용 프로그램을 Tru64에서 Linux로 포팅하고 있는데 PID_를 사용합니다.max는 limits.h로 정의되어 있습니다.Linux에는 이 정의가 없습니다.PID 검색 방법_판독하지 않는 경우의 MAX in c/proc/sys/kernel/pid_max손으로요?도서관이 있나요?디폴트로는 32768 입니다.사용하시는 시스템의 값을 읽어보실 수 있습니다./proc/sys/kernel/pid_max. 또한 64비트 시스템(최대22 2 = 4,194,304)에서 다음 기능을 통해 값을 더 높게 설정할 수 있습니다. echo 4194304 > /proc/sys/kernel/pid_max 자세한 내용은 이쪽: http://www.cs.wisc.edu/condor/condorg/linux..

programing 2022.08.12

C/C++에서 NULL 포인터를 확인하는 중입니다.

C/C++에서 NULL 포인터를 확인하는 중입니다. 닫았습니다. 이 질문은의견 기반의현재 답변을 받고 있지 않습니다. 이 질문을 개선하시겠습니까?이 게시물을 편집하여 사실과 인용문으로 답변할 수 있도록 질문을 업데이트하십시오. 6년 전에 문을 닫았어요 이 질문을 개선하다 에서는, 가 모든 것을 .NULL같이 . int * some_ptr; // ... if (some_ptr == NULL) { // Handle null-pointer error } else { // Proceed } 대신 int * some_ptr; // ... if (some_ptr) { // Proceed } else { // Handle null-pointer error } NULL이 해 주세요」라고 하는 더 만, 이 있는 「NUL..

programing 2022.08.12

이중 정밀도 - 소수점 이하

이중 정밀도 - 소수점 이하 제가 읽은 바로는 data type double 값은 대략 소수점 이하 15자리입니다.그러나 1.0/7.0과 같이 소수점 표현이 반복되는 숫자를 사용하면 변수 값이 0.14285714285714285 - 17자리인 것을 알 수 있습니다(디버거를 통해). 왜 내부적으로 17개소로 표기되어 있는지, 왜 15개 정밀도는 항상 ~15개로 표기되어 있는지 알고 싶습니다.IEEE 더블에는 53개의 유효비트가 있습니다(그 값은DBL_MANT_DIG에약 15.95 자리수의 10 진수(log1053(2))입니다.실장 세트는DBL_DIG16이 아니라 15로 줄여서 반올림해야 하니까즉, 거의 십진수 이상의 정밀도를 얻을 수 있습니다.DBL_DIG==15그 때문에). 그nextafter()함수는 ..

programing 2022.08.12

pthread 대기 조건 주변에서 while loop이 필요한 이유는 무엇입니까?

pthread 대기 조건 주변에서 while loop이 필요한 이유는 무엇입니까? pthread와 wait 조건을 배우고 있습니다.일반적인 대기 스레드는 다음과 같습니다. pthread_mutex_lock(&m); while(!condition) pthread_cond_wait(&cond, &m); // Thread stuff here pthread_mutex_unlock(&m); 내가 이해할 수 없는 것은 왜 라인이while(!condition)를 사용해도 필요합니다.pthread_cond_signal()실마리를 깨우려고. 내가 만약 그것을 사용한다면 나는 이해할 수 있다.pthread_cond_broadcast()모든 대기 스레드를 웨이크업하고 그 중 하나가 뮤텍스를 잠금 해제하기 전에 상태를 다시 ..

programing 2022.08.11