반응형

C 36

C++ 함수 포인터를 C 함수 포인터로 변환

C++ 함수 포인터를 C 함수 포인터로 변환 저는 C 라이브러리를 이용하여 C++ 어플리케이션을 개발하고 있습니다.C 라이브러리에 기능할 포인터를 보내야 합니다. 이것은 내 수업입니다. class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); private: Ui::MainWindow *ui; void f(int*); private slots: void on_btn_clicked(); }; 내 on_btn_clicked 함수입니다. void MainWindow::on_btn_clicked() { void (MainWindow::* ptfptr) (int*) = &MainWindow::f..

source 2023.11.05

할당 배열 VS 가변 길이 배열

할당 배열 VS 가변 길이 배열 이 질문에는 이미 다음과 같은 답변이 있습니다. malloc을 통한 동적 메모리 할당과 VLA의 차이점은 무엇입니까? (4개 답변) 닫힘6년 전에. 메모리를 배열에 할당하는 방법은 두 가지가 있으며, 그 중 처음에는 크기를 알 수 없습니다.가장 일반적인 방법은malloc이것처럼. int * array; ... // when we know the size array = malloc(size*sizeof(int)); 하지만 크기를 알고 난 후에 배열을 정의하는 것은 C99에서도 유효합니다. ... // when we know the size int array[size]; 그들은 완전히 똑같습니까?아니요, 완전히 똑같지는 않습니다.두 개체 모두 동일한 개체 수와 유형을 저장할 ..

source 2023.10.31

사용 중인 waitpid()의 예?

사용 중인 waitpid()의 예? 나는 그것을 알고 있습니다.waitpid()프로세스가 완료될 때까지 기다리는데 정확히 어떻게 사용합니까? 여기서 제가 하고 싶은 것은 두 아이를 만들어서 첫 번째 아이가 끝날 때까지 기다렸다가 두 번째 아이를 죽이고 나가는 것입니다. //Create two children pid_t child1; pid_t child2; child1 = fork(); //wait for child1 to finish, then kill child2 waitpid() ... child1 { kill(child2) } 구문waitpid(): pid_t waitpid(pid_t pid, int *status, int options); 의 가치.pid다음이 될 수 있습니다. < -1: 프로세..

source 2023.10.31

GLib 기능을 사용하는 이유는 무엇입니까?

GLib 기능을 사용하는 이유는 무엇입니까? C 및 GTK+에서 프로그래밍하는 동안 사용하는 것이 "더 나은" 이유는 무엇입니까?g_strdup_printf,g_free,g_strcmp0GLIB 동료들은?일반적으로 GLib의 목적은 유틸리티 및 휴대성 라이브러리입니다.그것 자체가 그것을 사용하는 것을 고려하는 이유입니다. 여러분이 언급한 특정 기능들은 모두 C 표준 라이브러리 변형 위에 추가적인 기능을 제공합니다. g_strdup_printf는 것과 같은.sprintf, 하지만 실제로 버퍼를 할당하고 버퍼의 크기에 대한 추측을 저장합니다. (반환 값은 다음과 같아야 합니다.)g_freed.) g_free는 것과 같은.free, 그러나 NULL-포인트가 있는지 확인합니다. g_strcmp0는 것과 같은.s..

source 2023.10.31

C 소비용 C++ 클래스 API 포장

C 소비용 C++ 클래스 API 포장 C/FFI 라이브러리에서 쉽게 사용할 수 있도록 DLL에서 랩핑하여 내보내야 하는 관련 C++ 클래스 세트가 있습니다.저는 이를 위한 "베스트 프랙티스"를 찾고 있습니다.예를 들어 객체 생성 및 자유화 방법, 기본 클래스 처리 방법, 대체 솔루션 등이 있습니다. 지금까지 제가 가진 몇 가지 기본 지침은 모든 파괴자를 포함하여 '이것' 포인터를 나타내는 여분의 공백* 인수를 가진 간단한 함수로 변환하는 것입니다.생성자는 원래 인수 목록을 유지할 수 있지만 개체를 나타내는 포인터를 반환해야 합니다.모든 메모리는 프로세스 전체에 동일한 할당 집합과 자유 루틴을 통해 처리되어야 하며 매크로 또는 다른 방식을 통해 핫 스왑이 가능해야 합니다.각 공개 방법에 대해 C 함수가 필..

source 2023.10.26

가변 인수는 gcc에서 어떻게 구현됩니까?

가변 인수는 gcc에서 어떻게 구현됩니까? int max(int n, ...) 사용중입니다cdecl호출자가 복귀한 후에 호출자가 변수를 정리하는 호출 규칙. 매크로가 어떻게 작동하는지 알고 싶습니다.va_end,va_start그리고.va_arg일? 호출자가 인수 배열의 주소를 max로 두 번째 인수로 전달합니까?C 언어가 스택에 매개 변수를 저장하는 방식을 살펴보면 매크로가 작동하는 방식이 명확해야 합니다:- Higher memory address Last parameter Penultimate parameter .... Second parameter Lower memory address First parameter StackPointer -> Return address (참고로 하드웨어에 따라 스택 포..

source 2023.10.26

typedef 포인터 상수 이상함

typedef 포인터 상수 이상함 다음 코드를 고려해주시기 바랍니다. typedef struct Person* PersonRef; struct Person { int age; }; const PersonRef person = NULL; void changePerson(PersonRef newPerson) { person = newPerson; } 어떤 이유에서인지 컴파일러는 읽기 전용 값을 할당할 수 없다고 불평하고 있습니다.하지만.const키워드는 포인터를 일정하게 만들지 않아야 합니다.무슨 생각 있어요?참고: typedef int* intptr; const intptr x; 다음과 같지 않습니다. const int* x; intptrint를 가리키는 포인터입니다.const intptr에 대해 상수 포..

source 2023.10.26

C와 C++의 "기준 통과"의 차이는 정확히 무엇입니까?

C와 C++의 "기준 통과"의 차이는 정확히 무엇입니까? "pass by reference"라는 문구는 C와 C++ 개발자들이 동일하게 사용하고 있지만 서로 다른 의미로 사용되고 있는 것으로 보입니다.각 언어에서 이 애매모호한 문구의 차이는 정확히 무엇입니까?기준 통과와 값 통과의 차이를 이미 다루는 질문들이 있습니다.기본적으로, 함수에 값별로 인수를 전달한다는 것은 함수가 자체적으로 인수 복사본을 갖게 된다는 것을 의미합니다. 즉, 함수의 값이 복사됩니다.해당 복사본을 수정해도 원래 개체는 수정되지 않습니다.그러나 참조를 통과할 때 함수 내부의 매개 변수는 전달된 개체와 동일한 개체를 나타냅니다. - 함수 내부의 모든 변화는 외부에서 볼 수 있습니다. 유감스럽게도 "pass by value"와 "pas..

source 2023.10.26

*nix 의사단말기는 어떻게 작동합니까?마스터/슬레이브 채널은 무엇입니까?

*nix 의사단말기는 어떻게 작동합니까?마스터/슬레이브 채널은 무엇입니까? 저는 리눅스 시스템의 C에서 단순하고 바보 같은 X 터미널 에뮬레이터를 쓰고 싶습니다. 처음에는 껍데기를 열고 출력물을 보여줘야 할 거라고 생각했습니다.xterm과 rxvt 코드를 확인해보니 조금 더 복잡해 보입니다. 우선 오픈프티가 있는 의사단말기를 열어야 합니다.그래서 man 페이지를 보고 openpty가 마스터와 슬레이브라는 2개의 파일 설명자를 채우는 것을 봅니다.xterm 코드와 rxvt 코드 모두 특수 파일의 시스템 의존성 때문에 지저분합니다. 단말기 탈출 코드에 대한 수많은 정보를 이해합니다.제가 정말 이해할 수 없는 것은 마스터/슬레이브 파일 설명자를 어떻게 해야 합니까? 단말기를 열고, 로그인하고, 셸에서 "ls"..

source 2023.10.16

(함수명)의 크기'는 무엇을 반환합니까?

(함수명)의 크기'는 무엇을 반환합니까? 샘플 코드: int main(void) { printf ("size = %d\n", sizeof(main)); } 된 값 는 얼마입니까?sizeof예)에 적용됩니다.main?를 금지합니다 - C 로 - gcc -pedantic를 생산합니다.invalid application of ‘sizeof’ to a function type경고문. .gcc다를(를).1위해서sizeof(main) 즉, . 컴파일러 의존적인 것 같습니다. 연산자 크기 sizeof unary-expression sizeof ( type-name ) 피연산자는 단항식인 식별자 또는 유형 캐스트식(즉, 괄호로 둘러싸인 유형 지정자)입니다.단항식은 비트 필드 개체, 불완전한 유형 또는 a를 나타낼 수 ..

source 2023.10.16
반응형