반응형

C 28

C에서 함수 배열을 정의하는 방법

C에서 함수 배열을 정의하는 방법 나는 다음과 같은 선언문을 포함하는 구조를 가지고 있습니다. void (*functions[256])(void) //Array of 256 functions without arguments and return value 그리고 다른 함수로 정의하고 싶지만 256개의 함수가 있습니다!나는 다음과 같은 일을 할 수 있습니다. struct.functions[0] = function0; struct.functions[1] = function1; struct.functions[2] = function2; 너무 피곤한데, 이런 걸 할 수 있는 방법이 없을까요? struct.functions = { function0, function1, function2, function3, .....

programing 2023.10.29

함수 선언의 최대 매개 변수 수

함수 선언의 최대 매개 변수 수 함수 정의에서 매개 변수의 최소 개수는 0개로 알고 있습니다만, 함수 정의에서 매개 변수의 최대 개수는 몇 개입니까?나는 단지 지식을 위해서 그리고 호기심 때문에 질문하는 것이지, 내가 실제 기능을 쓰려는 것은 아닙니다.네, 시행에 따른 제한이 있습니다.답변은 C++ 표준에서 발췌한 다음과 같이 굵은 글씨로 제공됩니다. 1. C++ 언어 부속서 B - 구현 수량 컴퓨터는 유한하기 때문에 C++ 구현은 성공적으로 처리할 수 있는 프로그램의 크기에 제한이 있을 수밖에 없습니다.모든 구현은 알려진 경우 이러한 제한을 문서화해야 합니다.이 문서에서는 고정 한계가 존재하는 곳을 인용하거나, 사용 가능한 자원의 함수로 가변 한계를 계산하는 방법을 설명하거나, 고정 한계가 존재하지 않..

programing 2023.10.29

pthread 조건 변수를 언제 사용해야 합니까?

pthread 조건 변수를 언제 사용해야 합니까? pthread 질문: 조건 변수는 다른 스레드가 pthread_cond_wait를 호출하기 전에 pthread_cond_wait를 호출하는 경우에만 작동하는 것으로 나타납니다.기다리기 전에 어떻게든 알림이 발생하면 대기가 중단됩니다. 제 질문은 조건 변수는 언제 사용해야 합니까? 스케줄러는 스레드를 선점할 수 있으며 대기 전에 알림이 발생할 수 있습니다. 세마포어에 대기하는 것은 이런 문제가 없습니다. 카운터가 있습니다. 조건부 변수가 세마포어보다 나은 경우는 언제입니까? 테스트 내용은 다음과 같습니다. 파일 condvar.c #include #include #include // test of conditional variables; // if cond-..

programing 2023.10.29

프레임 포인터는 언제 생략해야 합니까?

프레임 포인터는 언제 생략해야 합니까? 프레임 포인터를 생략할 때 실질적인 최적화가 있습니까?내가 이 페이지를 읽어서 제대로 이해했다면,-fomit-frame-pointer프레임 포인터의 저장, 설정 및 복원을 피하고 싶을 때 사용됩니다. 이 작업은 각 기능 호출에 대해서만 수행되는 작업이며, 그렇다면 각 기능에 대해 몇 가지 지침을 피할 가치가 있습니까?최적화를 위해서는 사소한 것이 아닙니까?디버깅 제한과 별개로 이 옵션을 사용할 경우의 실제 의미는 무엇입니까? 이 옵션을 사용하거나 사용하지 않고 다음 C 코드를 컴파일했습니다. int main(void) { int i; i = myf(1, 2); } int myf(int a, int b) { return a + b; } , # gcc -S -fomit..

programing 2023.10.29

.h에서 type def'd struct를 전달하는 방법

.h에서 type def'd struct를 전달하는 방법 저는 Preprocessor.h를 가지고 있습니다. #define MAX_FILES 15 struct Preprocessor { FILE fileVector[MAX_FILES]; int currentFile; }; typedef struct Preprocessor Prepro; void Prepro_init(Prepro* p) { (*p).currentFile = 0; } 정의에서 선언을 분리해야 한다는 것을 그때 깨달았습니다.그래서 Preprocessor.c: #define MAX_FILES 15 struct Preprocessor { FILE fileVector[MAX_FILES]; int currentFile; }; typedef struct..

programing 2023.10.24

C에서 소켓 연결부를 완전히 파괴하는 방법

C에서 소켓 연결부를 완전히 파괴하는 방법 저는 소켓을 이용하여 리눅스에서 채팅 클라이언트를 만들었고, 연결을 완전히 파괴하고 싶습니다.다음은 코드의 관련 부분입니다. int sock, connected, bytes_recieved , true = 1, pid; char send_data [1024] , recv_data[1024]; struct sockaddr_in server_addr,client_addr; int sin_size; label: if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("Socket"); exit(1); } if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int))..

programing 2023.10.24

매크로가 정의되어 있고 동시에 특정 값과 동일한지 확인할 수 있는 방법이 있습니까?

매크로가 정의되어 있고 동시에 특정 값과 동일한지 확인할 수 있는 방법이 있습니까? 나는 정기적으로 객체와 같은 전처리기 매크로를 C 코드의 부울 플래그로 사용하여 코드의 섹션을 켜고 끕니다. 예를들면 #define DEBUG_PRINT 1 그런 다음에 사용하는 것처럼. #if(DEBUG_PRINT == 1) printf("%s", "Testing"); #endif 그러나, 만약 그 파일이 포함된 헤더 파일이라면 문제가 발생합니다.#define소스 코드에 포함되는 것을 잊어버립니다.매크로가 선언되지 않았기 때문에 전처리기는 매크로를 0과 동일한 것으로 취급하고,#if문이 실행되지 않습니다. 헤더 파일이 포함된 것을 잊어버린 경우 예기치 않은 제멋대로의 동작이 발생할 수 있습니다. 이상적으로, 매크로가 정..

programing 2023.10.19

Linux에서 파일을 열 때 O_CLOEXEC을 언제 사용해야 합니까?

Linux에서 파일을 열 때 O_CLOEXEC을 언제 사용해야 합니까? 제 프로세스는 여러 번 포크를 사용하고, 아이가 실행할 때마다 다른 프로그램을 실행했으면 합니다. 주요 프로세스에서 파일 설명자를 엽니다.open()사이콜 깃발을 주는 것이 옳을까요?O_CLOEXEC그래서 저와 함께 하는 새로운 프로그램.exec()FD 자원이 없을까요?예, 해당 파일 설명자에 액세스하기 위해 실행하는 프로그램이 필요한 경우를 제외합니다.exec을 호출하기 전에 하위 프로세스에서 파일 설명자를 수동으로 닫을 수도 있지만 오류가 발생하기 쉽습니다.언급URL : https://stackoverflow.com/questions/15447657/when-should-i-use-o-cloexec-when-i-open-file-..

programing 2023.10.19

Windows에서 COM(시리얼) 포트를 나열하시겠습니까?

Windows에서 COM(시리얼) 포트를 나열하시겠습니까? Windows 컴퓨터에서 사용 가능한 COM(직렬) 포트를 나열하는 강력한 방법을 찾고 있습니다.WMI를 사용하는 것에 대한 게시물이 있지만, 조금 더 적은 것을 원합니다.NET 특정 - 없는 Python 또는 C++ 프로그램의 포트 목록을 가져오려고 합니다.그물. 저는 현재 두 가지 다른 접근법을 알고 있습니다. 의 정보를 읽습니다.HARDWARE\\DEVICEMAP\\SERIALCOMM레지스트리 키.이것은 좋은 선택처럼 보이지만, 견고합니까?이 레지스트리 셀이 항상 사용 가능한 포트의 전체 목록을 보유하고 있다는 보장을 온라인이나 MSDN에서 찾을 수 없습니다. 전화 시도CreateFile위에COMN1부터 어떤 것까지 N개의 숫자를 가지고 있..

programing 2023.10.14

C 코드는 어셈블리 코드(예: 최적화 스트렐렌)를 어떻게 호출합니까?

C 코드는 어셈블리 코드(예: 최적화 스트렐렌)를 어떻게 호출합니까? 나는 항상 C 프로그래밍 언어 내의 어떤 기능들이 어떻게 어셈블리로 작성되어 최적화되는지에 대한 것들을 읽습니다.그 문장이 조금 잘못 들린다면 사과하겠습니다. 그래서 분명히 말씀드리겠습니다.UNIX/C 시스템에서 strlen과 같은 일부 기능을 호출할 때 실제 호출하는 기능이 어셈블리에 기록되는 이유는 무엇입니까?조립품을 어떻게든 C 프로그램에 바로 쓸 수 있습니까, 아니면 외부 통화 상황입니까?이것을 할 수 있는 것이 C 표준의 일부입니까, 아니면 운영 체제 고유의 것입니까?C 표준은 구현 방식보다는 각 라이브러리 기능이 수행해야 할 작업을 지시합니다. C의 알려진 거의 모든 구현은 기계 언어로 컴파일됩니다.은 C다러와 같은 을 어떻..

programing 2023.10.09
반응형