반응형

C 40

C 함수의 인수와 C 함수의 오버로드에 대한 기본값

C 함수의 인수와 C 함수의 오버로드에 대한 기본값 C++ lib를 ANSIC로 변환하는데 ANSIC가 함수 변수에 대한 기본값을 지원하지 않는 것 같습니까? 아니면 제가 잘못 알고 있는 것입니까?제가 원하는 것은 이런 것입니다. int funcName(int foo, bar* = NULL); 또한 ANSIC에서 기능 과부하가 가능합니까? 필요합니다. const char* foo_property(foo_t* /* this */, int /* property_number*/); const char* foo_property(foo_t* /* this */, const char* /* key */, int /* iter */); 물론 이름을 다르게 지정할 수는 있지만 C++에 익숙해진 저는 오버로드 기능을 하..

source 2023.10.23

이 호환되는 기능 타입들이 C에 있습니까?

이 호환되는 기능 타입들이 C에 있습니까? 다음과 같은 C 프로그램을 생각해 봅니다. int f() { return 9; } int main() { int (*h1)(int); h1 = f; // why is this allowed? return h1(7); } C11 표준 6.5.16.1항에 따르면, 간단한 과제에서 "다음 중 하나가 유지되어야 하며, 목록에서 관련된 것은 다음과 같습니다. 왼쪽 피연산자는 atomic, qualified 또는 unqualified pointer type을 가지고 있으며 (l값 변환 후 왼쪽 피연산자가 가질 유형을 consid링합니다) 두 피연산자는 호환되는 유형의 한정된 버전 또는 한정되지 않은 버전에 대한 포인터이며, 왼쪽이 가리키는 유형은 오른쪽이 가리키는 유형의 ..

source 2023.10.23

스택 포인터 값 출력

스택 포인터 값 출력 리눅스(Debian 및 Ubuntu)에서 C의 스택 포인터에서 현재 값을 출력하려면 어떻게 해야 합니까? 구글을 시도해 보았지만 결과가 나오지 않았습니다.휴대가 불가능하거나 작동이 보장되지 않는 한 가지 방법은 로컬의 주소를 포인터로 간단히 인쇄하는 것입니다. void print_stack_pointer() { void* p = NULL; printf("%p", (void*)&p); } 이것은 본질적으로 다음의 주소를 출력할 것입니다.p현재 스택 포인터의 좋은 근사치입니다.그것을 할 수 있는 휴대용 방법은 없습니다. GNUC에서 이것은 gcc가 "SP"를 ESP 또는 RSP의 줄임말로 인식하는 x86을 포함하여 SP라는 이름의 레지스터를 가진 대상 ISA에서 작동할 수 있습니다. /..

source 2023.10.18

푸시 대 이동 비용(스택 대 메모리 근처), 함수 호출 오버헤드

푸시 대 이동 비용(스택 대 메모리 근처), 함수 호출 오버헤드 질문:. 스택에 액세스하는 속도가 메모리에 액세스하는 속도와 같습니까? 예를 들어 스택 내에서 몇 가지 작업을 수행하도록 선택하거나 메모리의 레이블이 지정된 위치에서 직접 작업을 수행할 수 있습니다. 따라서 구체적으로 다음과 같습니다.push ax와 같은 속도로mov [bx], ax? 마찬가지로pop ax와 같은 속도로mov ax, [bx]? (assume bx가 위치합니다.near기억력.) 질문 동기: C에서는 파라미터를 취하는 사소한 함수를 억제하는 것이 일반적입니다. 저는 항상 함수가 돌아오면 매개 변수가 스택에 푸시되다가 스택에서 튀어 나와야 할 뿐만 아니라 함수 호출 자체가 CPU의 컨텍스트를 보존해야 하기 때문에 스택 사용량이 더..

source 2023.10.08

입자 시스템용 점 스프라이트

입자 시스템용 점 스프라이트 포인트 스프라이트는 입자 시스템을 구축하는 데 가장 적합한 선택입니까? 최신 버전의 OpenGL과 최신 그래픽 카드 드라이버에 포인트 스프라이트가 있습니까?아니면 vbo와 glsl을 이용해서 할까요?포인트 스프라이트는 입자 시스템에 매우 적합합니다.그러나 이들은 VBO 및 GLSL과 아무런 관련이 없으며, 이는 이들이 완전히 직교하는 특징임을 의미합니다.포인트 스프라이트를 사용하든 사용하지 않든 간에 항상 VBO를 사용하여 기하학적 구조를 업로드해야 합니다. 포인트든, 미리 만들어진 스프라이트든, 무엇이든 말입니다. 그리고 이 기하학적 구조를 쉐이더 세트(물론 현대 OpenGL에서는)를 통해 입력해야 합니다. , 스프라이트는 잘의 고정 으로 지원되지는 , , OpenGL 에서..

source 2023.10.08

xlib으로 스크린샷을 제대로 찍는 방법은?

xlib으로 스크린샷을 제대로 찍는 방법은? 스크린캐스팅에 사용할 화면 이미지를 캡쳐하려고 합니다.따라서 빠른 해결책이 필요하며, import나 xwd와 같은 shell 프로그램에 의존할 수 없습니다. 이것이 지금까지 제가 작성한 코드인데 실패해서 이상한 색을 가진 여러 이미지의 조각을 보여주는 것처럼 보이는 정크 이미지가 됩니다. 내가 무엇을 잘못하고 있는지에 대한 아이디어가 있습니까? #include #include #include #include using namespace cimg_library; int main() { Display *display = XOpenDisplay(NULL); Window root = DefaultRootWindow(display); XWindowAttributes g..

source 2023.10.08

모든 pthread가 완료될 때까지 어떻게 기다려야 합니까?

모든 pthread가 완료될 때까지 어떻게 기다려야 합니까? 기본 스레드가 종료되기 전에 모든 스레드가 완료될 때까지 기다리길 바랄 뿐입니다. 스레드는 여러 가지 이유로 많이 오가고, 모든 스레드를 추적하고 싶지는 않습니다. 모든 스레드가 언제 사라졌는지 알고 싶을 뿐입니다. wait()는 자식 프로세스에 대해 이 작업을 수행하며, 자식이 남아 있지 않을 때 ECHILD를 반환하지만 wait는 (p) 스레드와 함께 작동하지 않습니다. 저는 정말로 모든 미결 스레드 목록을 보관하고(그들이 오고 갈 때) pthread_join을 각각 호출해야 하는 어려움을 겪고 싶지 않습니다. 이것을 신속하고 더러운 방법으로 할 수 있습니까?모든 스레드가 완료된 후 메인 스레드에서 특별히 수행할 작업을 원하십니까? 않은 에..

source 2023.10.03

일반 스왑 매크로를 C에 구현

일반 스왑 매크로를 C에 구현 이 질문에는 이미 다음과 같은 답변이 있습니다. 닫힘12년 전에. 중복 가능: c에 std:: swap()와 동등한 값이 있습니까? 안녕하세요 여러분. 일반 스왑 매크로를 C에 작성하는 데 문제가 발생했는데 매크로는 다음과 같습니다. #define swap(x,y) { x = x + y; y = x - y; x = x - y; } 정수와 플로트는 잘 작동하지만 문제점이 있는지 잘 모르겠습니다.일반 매크로가 포인터, 문자 등을 교환하는 것을 의미한다면 어떨까요? 모든 입력을 교환하기 위한 일반 매크로를 작성하는 데 도움을 줄 수 있는 사람이 있습니까? 감사해요.이것은 정수에서만 잘 작동합니다. 플로트의 경우 실패합니다(예: 매우 큰 플로트와 매우 작은 플로트를 사용하여 플로트..

source 2023.10.03

UNIX 휴대용 원자 작동

UNIX 휴대용 원자 작동 pthread가 있는 휴대용 스레드와 유사한 원자 변수 연산을 위한 (POSIX-) 휴대용 방법이 C에 있습니까? 원자 연산은 원자적으로 실행되는 "증가 및 증가"와 같은 연산으로, 어떤 컨텍스트 스위치도 연산을 방해할 수 없음을 의미합니다.리눅스 커널 공간에서는 atomic_t를 입력해야 하고 자바에서는 java.util.concurrent.atomic 패키지를 사용합니다. 리눅스에서 atomic.h 파일은 atomic 연산을 제공하지만 include는 플랫폼에 의존적입니다.#include 맥 OS X에서도 비슷한 방식으로 사용할 수 없습니다.C11 현재 원자 작동을 제공하는 선택적인 원자 라이브러리가 있습니다.이것은 이 옵션 기능이 있는 C11 컴파일러(예: gcc-4.9)..

source 2023.09.28

함수는 반환문 없이 값을 반환합니다.

함수는 반환문 없이 값을 반환합니다. 다음 코드의 출력이 올바른 이유는 무엇입니까?int GGT는 반품명세서가 없지만 코드는 어쨌든 작동합니까?전역 변수가 설정되어 있지 않습니다. #include #include int GGT(int, int); void main() { int x1, x2; printf("Bitte geben Sie zwei Zahlen ein: \n"); scanf("%d", &x1); scanf("%d", &x2); printf("GGT ist: %d\n", GGT(x1, x2)); system("Pause"); } int GGT(int x1, int x2) { while(x1 != x2) { if(x1 > x2) { /*return*/ x1 = x1 - x2; } else { /*..

source 2023.09.18
반응형