반응형

C 17

pthread_create 및 마지막 인수로 정수 전달

pthread_create 및 마지막 인수로 정수 전달 다음과 같은 기능이 있습니다. void *foo(void *i) { int a = (int) i; } int main() { pthread_t thread; int i; pthread_create(&thread, 0, foo, (void *) i); } 컴파일 시 주조에 몇 가지 오류가 있습니다((void *) i그리고.int a = (int) i의 마지막 인수로 정수를 전달하려면 어떻게 해야 합니까?pthread_create제대로?szx의 답변을 바탕으로 (그러므로 그에게 신뢰를 주세요), 여기 그것이 당신에게 어떻게 작용할 것인지가 있습니다.for루프: void *foo(void *i) { int a = *((int *) i); free(i); ..

programing 2023.06.20

오류 값을 설정하는 방법은 무엇입니까?

오류 값을 설정하는 방법은 무엇입니까? 저는 두 가지 다른 방법에 대해 두 가지 통화가 있습니다. void func1() { // do something if (fail) { // then set errno to EEXIST } } 그리고 두 번째 방법은: void func2() { // do something if (fail) { // then set errno to ENOENT } } 가 때할정설을 때.errno, ? 확인? 떤가치로무합, 을엇니까은그것? 단지 오류 확인? 을 어떻게 합니까?errno의 func1그리고.func2EEXIST그리고.ENOENT 감사해요.모든 실질적인 목적을 위해, 당신은 치료할 수 있습니다.errno글로벌 변수처럼(보통 그렇지는 않지만).그래서 포함합니다.errno.h그..

programing 2023.06.15

왜 (x)++의 크기가 컴파일됩니까?

왜 (x)++의 크기가 컴파일됩니까? 이 질문에는 이미 다음과 같은 답이 있습니다. (x++)의 크기가 x가 증가하지 않는 이유는 무엇입니까? (10개 답변) 마감됨3년 전에. 다음 코드 조각이 발생했습니다. int a = 3; printf("%d", sizeof(a)++); 이것은 GCC 9.3.0 및 -std=c99로 컴파일될 것으로 보입니다.컴파일되지 않는 경우: printf("%d", sizeof(3)++); GCC가 오류를 출력합니다. 오류: 증분 피연산자로 필요한 l 값 첫 번째 스니펫을 컴파일하기 전에는 이러한 오류를 예상했을 것입니다. 포스트픽스 ++ 연산자의 피연산자는 C99 표준 기준으로 al 값이어야 합니다. 포스트픽스 증분 또는 감소 연산자의 피연산자는 적격 또는 비적격 실제 또는 ..

programing 2023.06.15

C와 C++에서 const pointer-to-point는 무엇을 의미합니까?

C와 C++에서 const pointer-to-point는 무엇을 의미합니까? 저는 선언문을 오른쪽에서 왼쪽으로 읽는 습관을 알고 있으며 동료가 제게 다음과 같이 말하기 전까지는 무슨 일이 일어나고 있는지 알고 있다고 꽤 확신했습니다. const MyStructure** ppMyStruct; 즉, "ppMyStruct는 (변동 가능한) MyStructure에 대한 const 포인터입니다"(C++). 나는 그것이 "ppMyStruct는 constMyStructure에 대한 포인터"를 의미한다고 생각했을 것입니다.C++ 스펙에서 답을 찾았지만, 제가 그걸 잘 못 하는 것 같아요... C++에서 는 무엇을 의미하며, C에서도 같은 것을 의미합니까?당신의 동료는 틀렸습니다.이것은 const MyStructure..

programing 2023.06.15

문자를 선언할 때 char와 int의 차이

문자를 선언할 때 char와 int의 차이 저는 이제 막 C를 배우기 시작했는데 int와 char를 사용하여 문자를 선언하는 것이 다소 혼란스럽습니다. 저는 문자의 "정수"가 문자의 ASCII 소수라는 의미에서 모든 문자가 정수로 구성되어 있다는 것을 잘 알고 있습니다. 그렇긴 하지만, 저는 문자를 선언하는 것이 완벽하게 가능하다는 것을 배웠습니다.intASCII 소수를 사용하지 않습니다.예: 변수 선언test인물로서'X'다음과 같이 쓸 수 있습니다. char test = 'X'; 그리고. int test = 'X'; 그리고 두 개의 문자 선언에 대해 변환 문자입니다.%c(테스트가 다음과 같이 정의되더라도)int). 따라서 다음을 사용하여 문자 변수를 선언하는 것 사이의 차이가 문제입니다.char그리고...

programing 2023.06.15

setsid() 앞에 포크()가 있는 이유

setsid() 앞에 포크()가 있는 이유 왜죠fork()전에setsid()프로세스를 데몬화하시겠습니까? 기본적으로 프로세스를 제어 터미널에서 분리하여 프로세스 그룹 리더로 만들고 싶다면 : 사용합니다.setsid(). 이전에 포크를 사용하지 않고 이렇게 하는 것은 효과가 없습니다. 왜요?먼저, setsid()는 프로세스를 프로세스 그룹 리더로 만들지만 사용자를 새 세션의 리더로 만들 수도 있습니다.고유한 공정 그룹을 얻는 데 관심이 있는 경우 setpgid(0.0)를 사용합니다. 이미 프로세스 그룹 리더 또는 세션 리더인 경우 setsid()가 EPERM을 반환하는 실제 이유를 이해하려면 프로세스 그룹 및 세션 ID가 프로세스 그룹 및 세션 ID를 생성하는 프로세스 ID에서 초기화된다는 것을 이해해야 ..

programing 2023.06.10

C 프로그래밍:불완전한 유형 오류에 대한 참조 취소 포인터

C 프로그래밍:불완전한 유형 오류에 대한 참조 취소 포인터 다음과 같이 정의된 구조가 있습니다. struct { char name[32]; int size; int start; int popularity; } stasher_file; 이러한 구조체에 대한 포인터 배열: struct stasher_file *files[TOTAL_STORAGE_SIZE]; 내 코드에서는 구조체에 포인터를 만들어 구성원을 설정하고 배열에 추가합니다. ... struct stasher_file *newFile; strncpy(newFile->name, name, 32); newFile->size = size; newFile->start = first_free; newFile->popularity = 0; files[num_fi..

programing 2023.06.10
반응형