반응형

C 34

C++ 네임스페이스 안에 외부 "C" 링크가 있습니까?

C++ 네임스페이스 안에 외부 "C" 링크가 있습니까? namespace someNameSpace { extern "C" void doSomething() { someOperations(); } } 뛰고싶습니다doSomething()C++ 및 C 환경 모두에서 사용할 수 있습니다. 이스someNameSpace여전히 캡슐화 중인doSomething()그것을 들춰보면extern "C"연계? C++ 쪽의 글로벌 네임스페이스를 오염시키지 않으면서 C++와 C 사이에 기능을 공유할 수 있는 좋은 방법이 있습니까? 편집: 이 코드는 주로 C++ 모드에서 사용되지만 C 링크는 테스트용으로만 사용되기 때문에 이것이 더 좋은 방법이라고 생각합니다. namespace someNameSpace { #ifdef COMPILE..

source 2023.10.14

리눅스 Perf 리포트 출력 이해

리눅스 Perf 리포트 출력 이해 대부분의 결과를 직관적으로 얻을 수 있지만, 결과를 완전히 이해하는 데 어려움을 겪고 있습니다.perf report특히 통화 그래프와 관련된 것에 대해 명령을 내리기 때문에, 저는 이 문제를 모두 해결하기 위해 바보 같은 테스트를 작성했습니다. 바보같은 시험. 다음 내용을 정리했습니다. gcc -Wall -pedantic -lm perf-test.c -o perf-test 인라인 등을 피하기 위한 적극적인 최적화는 없습니다. #include #define N 10000000UL #define USELESSNESS(n) \ do { \ unsigned long i; \ double x = 42; \ for (i = 0; i < (n); i++) x = sin(x); \ }..

source 2023.10.14

창에서 sys/socket.h 기능 사용

창에서 sys/socket.h 기능 사용 윈도우 내 socket.h 기능을 활용하려고 합니다.기본적으로 현재 https://beej.us/guide/bgnet/html/multi/clientserver.html#datagram 에서 샘플 코드를 보고 있습니다.socket.h가 유닉스 함수라는 것을 알고 있습니다 -- 이 샘플 코드를 컴파일하는 동안 해당 환경을 쉽게 에뮬레이트할 수 있는 방법이 없을까요?다른 IDE/Compiler가 변경되는 사항이 있습니까? 그렇지 않으면 가상화된 Linux 환경을 활용해야 할 것으로 생각됩니다. 코드가 UNIX 환경에서 실행될 가능성이 높기 때문에 어쨌든 최선일 수 있습니다. 감사해요.두 가지 옵션이 있습니다. 시그윈(Unix 에뮬레이션 라이브러리)을 사용합니다. 포트..

source 2023.10.09

'void*'를 해제해도 괜찮습니까?

'void*'를 해제해도 괜찮습니까? 고려 사항: struct foo { int a; int b; }; void* p = (void*)malloc(sizeof(struct foo)); ((foo*)p)->a; // Do something. free(p); // Is this safe? 네. malloc 반품void *프리테이크와 프리테이크void *, 그래서 당신의 캐스팅 중 일부는 무의미하고, 당신은 항상 당신이 자유롭게 하는 것입니다.void *다른 종류의 포인터로 시작한다고 해도 말입니다.네, 안전합니다.메모리를 할당할 때 런타임 라이브러리는 각 할당의 크기를 추적합니다.free()를 호출하면 해당 주소가 검색되고 해당 주소에 대한 할당을 찾으면 올바른 양의 메모리(해당 주소에 할당된 블록)가 해제..

source 2023.10.04

Linux에서 WaitForSingleObject 및 WaitForMultipleObjects equivalent?

Linux에서 WaitForSingleObject 및 WaitForMultipleObjects equivalent? 윈도우에서 리눅스로 애플리케이션을 마이그레이션하고 있습니다.저는 에 대한 문제에 직면해 있습니다.WaitForSingleObject그리고.WaitForMultipleObjects인터페이스들 애플리케이션에서 나는 모든 스레드가 상위 프로세스의 이벤트를 기다리거나 t초마다 주기적으로 실행되는 여러 스레드를 생성합니다. 확인했습니다pthread_cond_timedwait, 절대적인 시간을 정해야 합니다 유닉스에서 이를 구현하려면 어떻게 해야 합니까?고수하기pthread_cond_timedwait사용.clock_gettime. 예를 들어, struct timespec ts; clock_gettim..

source 2023.10.04

C++ FAQ의 안전하지 않은 매크로에 대한 설명?

C++ FAQ의 안전하지 않은 매크로에 대한 설명? C++ FAQ에 따르면 매크로는 사악합니다. [9.5] 일반 기존 #정의 매크로 대신 인라인 기능을 사용해야 하는 이유는 무엇입니까? 왜냐면#define매크로는 4가지 다른 방식으로 악합니다: 악 #1, 악 #2, 악 #3, 악 #4.가끔은 사용해야 할 때도 있지만 여전히 사악합니다.와는 달리#define매크로, 인라인 함수는 항상 모든 인수를 한 번만 정확하게 평가하기 때문에 악명 높은 매크로 오류를 방지합니다.즉, 인라인 함수를 호출하는 것은 의미론적으로 일반 함수를 호출하는 것과 같으며, 단지 더 빠르게 호출할 뿐입니다. // A macro that returns the absolute value of i #define unsafe(i) \ ( (..

source 2023.09.24

C 구조의 문자열 필드로 작업하는 방법?

C 구조의 문자열 필드로 작업하는 방법? 링크된 목록 개념 때문이 아니라 구조체 자체의 문자열 필드 때문에 C에서 단일 링크된 목록을 기반으로 데이터베이스를 만드는 데 어려움을 겪고 있습니다. 이것은 C의 과제이고 제가 알기로는 (저는 초보자입니다) C는 'string'을 데이터 타입으로 인식하지 않습니다. 내 구조 코드는 다음과 같습니다. typedef struct { int number; string name; string address; string birthdate; char gender; } patient; typedef struct llist { patient num; struct llist *next; } list; 저는 이 구조물에 사용할 수 있도록 줄 자체에 대한 구조물건에 사용할 수 있..

source 2023.09.19

리눅스에서 해당 pid의 프로세스 이름

리눅스에서 해당 pid의 프로세스 이름 그의 pid에서 프로세스 이름을 얻는 방법은?예를 들어 나는 cat file1을 실행합니다.txt, 하지만 시스템에서 pid이기 때문에 cat 명령과 그것의 인수를 파악하고 싶습니다.그것을 결정할 구조나 비슷한 것이 있습니까?감 잡히는 게 없어요?이 유닉스를 수행하는 일반적인 방법은 없습니다. 각각의 OS는 이를 처리하는 방법이 다르며 어떤 것들은 매우 어렵습니다.리눅스를 말씀하시는군요.Linux의 경우 정보는 /profile 시스템에 있습니다. 프로세스 ID 9999의 명령줄을 가져오려면 파일을 읽습니다./proc/9999/cmdline.리눅스 상에서, 당신은 당신이 볼 수 있습니다./proc/. 타이핑 시도man proc자세한 정보는.내용은/proc/$PID/c..

source 2023.09.19

GCC에서 이니셜라이저 주변의 브레이스가 누락됨

GCC에서 이니셜라이저 주변의 브레이스가 누락됨 이 질문에는 이미 다음과 같은 답변이 있습니다. 경고 수리 방법: 이니셜라이저 주변 교정기 누락? (2개 답변) 닫힘작년에 아래 C에 이 구조가 있어서 모든 0으로 초기화하고 싶습니다.치아 교정기 누락 경고를 제거하려면 어떻게 해야 합니까? typedef struct { uint32_t incoming[FRAME_TYPE_MAX]; uint32_t outgoing[FRAME_TYPE_MAX]; uint32_t timeouts; uint32_t crc_errors; } pkt_t; static pkt_t stats = {0}; 이것은 GCC 버그 번호 53119입니다. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119 ..

source 2023.09.19

통화 최적화를 위한 최적화

통화 최적화를 위한 최적화 저는 C가 테일 콜 제거를 수행하지 않는다는 말을 자주 듣습니다.기준상 보장되지는 않지만, 어쨌든 제대로 된 실행에 의해 실제 실행되고 있지 않습니까?성숙하고 잘 구현된 컴파일러만을 대상으로 하고 불분명한 플랫폼을 위해 작성된 프리미티브 컴파일러에 대한 절대 최대 이식성은 신경 쓰지 않는다고 가정할 때, C에서 테일콜 제거에 의존하는 것이 합리적입니까? 또한 테일 콜 최적화를 표준에서 제외한 이유는 무엇입니까?"C는 테일 콜 제거를 수행하지 않습니다."와 같은 문장은 말이 되지 않습니다.여러분이 정확히 지적하셨듯이, 이와 같은 것들은 전적으로 구현에 달려 있습니다.예, 어떤 적절한 구현이든 꼬리 재귀를 [동등한] 사이클로 쉽게 전환할 수 있습니다.물론 C 컴파일러는 각 특정 코..

source 2023.09.14
반응형