C 36

gcc-Wall이 0-length 형식 문자열에 대한 경고를 주는 이유는 무엇입니까?

gcc-Wall이 0-length 형식 문자열에 대한 경고를 주는 이유는 무엇입니까? 이것에 대한 정보를 찾기 위해 주변을 조금 찾아봤지만 만족스러운 것이 발견되지 않았습니다.함수 호출에 특별한 동작이 있습니까? sprintf(someString, ""); 그게 왜 경고인지 설명해주는거죠?나는 C 표준이 0 길이의 포맷 문자열을 허용한다는 것을 발견했을 뿐입니다. 나는 다음 예시를 시도했습니다. #include int main() { char str[2] = {'a', 'a'}; sprintf(str, ""); printf("\'%c\'\'%c\'\n", str[0], str[1]); return 0; } 출력물을 출력합니다. '''a' 내가 기대했던 바로 그것입니다.그럼 왜 경고를 하는 거지?GCC가 ..

programing 2023.11.05

C 여러 개의 단선 선언

C 여러 개의 단선 선언 한 줄에 여러 변수를 표시한다고 선언하면 어떻게 됩니까? 예를 들어, int x, y, z; 모두 인트입니다.문제는 다음 문장에서 y와 z가 무엇인가 하는 것입니다. int* x, y, z; 모두 인트 포인터입니까?오직.xint에 대한 포인터입니다.y그리고.z규칙적인 int 입니다. 이것은 몇몇 사람들을 흥분시키는 C 선언 구문의 한 측면입니다.C는 선언자의 개념을 사용하는데, 이 개념은 선언되는 사물의 이름과 함께 유형 지정자가 제공하지 않는 추가 유형 정보를 소개합니다.선언문에 int* x, y, z; 선언자들은.*x,y,그리고.z(둘 중 하나를 쓸 수 있는 것은 C 구문의 실수입니다.int* x아니면int *x, 그리고 이 질문은 제가 두 번째 스타일을 사용하는 것을 추천하..

programing 2023.11.05

C++의 NULL이 일반적으로 C와 같은 포인터가 아닌 정수 리터럴인 이유는 무엇입니까?

C++의 NULL이 일반적으로 C와 같은 포인터가 아닌 정수 리터럴인 이유는 무엇입니까? 저는 C++를 수년간 써왔습니다.nullptrnull pointersnull pointers.또한 NULL이 발생하는 C를 알고 있으며, NULL 포인터에 대한 상수이며, 유형을 지정합니다.void *. 여러가지 이유로, 제가 사용할 수 밖에 없었습니다.NULL내 C++ 코드에 뭔가를 위해.템플릿 인수 추론 중에 컴파일러가 내 NULL이 정말로...라고 말할 때 내 놀라움을 상상해보세요.그래서 다시 확인해봤습니다 #include #include static_assert(not std::is_same::value, "NULL is long ???"); 그리고 실제로 정적 주장은 (GCC와 Clang과 함께) 실패합니다..

programing 2023.11.05

objdump가 -S 옵션으로 소스 코드를 표시하는 방법은 무엇입니까?

objdump가 -S 옵션으로 소스 코드를 표시하는 방법은 무엇입니까? 바이너리에 소스 파일에 대한 참조가 있습니까?바이너리에서 문자열 실행을 시도했지만 나열된 소스 파일에 대한 참조를 찾을 수 없었습니다...objdump는 원본 파일 이름을 참조하는 바이너리로 컴파일된 DWARF 디버깅 정보를 사용합니다.objdump는 명명된 소스 파일을 열어 소스를 로드하고 출력에 표시하려고 합니다.이진 파일이 디버깅 정보와 함께 컴파일되지 않은 경우 또는objdump소스 파일을 찾을 수 없습니다. 그러면 출력에서 소스 코드를 얻을 수 없고 어셈블리만 가능합니다. 사용할 때 원본 파일 이름이 표시되지 않습니다.stringsDWARF는 압축을 사용하기 때문에 바이너리에서.이진법의 왜소 정보는 명령어(명령어 포인터 또는..

programing 2023.11.05

C 또는 C++에서 A 플러그인 시스템 구현

C 또는 C++에서 A 플러그인 시스템 구현 문 닫았습니다.이 질문은 더 많아야 합니다.집중력이 있는현재 답변을 받지 않고 있습니다. 이 질문을 개선하고 싶으십니까?이 게시물을 편집하여 한 가지 문제에만 초점을 맞추도록 질문을 업데이트합니다. 3년전에 문을 닫았습니다. 이 질문을 개선합니다. 플러그인 스타일의 시스템을 구현하기 위한 팁은 무엇입니까?C에서 (그리고 C++도 내가 직접 해보지는 않았지만) 이것은 가장 일반적으로 동적으로 로드된 모듈을 사용하여 수행됩니다.이러한 API:s는 플랫폼에 따라 다릅니다. 에서는 POSIX( )를dlopen()함수족 기본적으로 로 빌드한 다음 플러그인을 한 다음할 수 .기본적으로 플러그인을 별도로 빌드한 다음 런타임에 로드하고 이름으로 기호를 검색한 다음 호출할 수..

programing 2023.10.31

*(긴*)0=0; 이 문장의 기능은 무엇입니까?

*(긴*)0=0; 이 문장의 기능은 무엇입니까? 다음 코드에서,*(long*)0=0;와 함께 사용됩니다.if조항, 하지만 그것의 목적은 무엇일까요? if(r.wid*r.ht < tot) *(long*)0=0; 0에서 0으로 적습니다. A의 주소로 해석됩니다.long, 예를 들면NULL포인팅합니다.그건 타당한 일이 아닙니다.NULL는 프로그램이 액세스할 수 있는 데이터를 유효하게 가질 수 있는 주소가 아닙니다.이 코드는 정의되지 않은 동작을 트리거하므로 일반적으로 특정 효과를 얻기 위해서는 이 코드를 사용할 수 없습니다. 그러나 종종 이와 같은 코드는 분할 오류 유형 충돌을 강제로 수행하는 데 사용되며, 디버거에 저장하는 것이 편리하기도 합니다. 다시 말하지만, 이는 정의되지 않은 동작입니다. 이러한 오류..

programing 2023.10.31

성능 손실을 감수하면서 'if' 문으로 두 개의 유사한 커널을 통합해야 합니까?

성능 손실을 감수하면서 'if' 문으로 두 개의 유사한 커널을 통합해야 합니까? 저는 코드가 거의 비슷하지만 약간의 차이가 있다는 의미에서 2개의 매우 유사한 커널 기능을 가지고 있습니다.현재 두 가지 옵션이 있습니다. 두 가지 다른 방법을 작성합니다(단, 매우 유사한 방법). 하나의 커널을 작성하고 if/else 문에 다른 코드 블록을 넣습니다. if 문이 알고리즘 성능에 얼마나 영향을 줄까요? 모든 블록의 모든 스레드가 if 또는 다른 것으로 들어가기 때문에 분기가 없다는 것을 알고 있습니다. 그렇다면 커널 함수가 많이 호출되면 if 문 하나로 인해 성능이 저하되는 것입니까?세 번째 대안은 C++ 템플릿을 사용하고 if/switch 문에 사용되는 변수를 템플릿 매개 변수로 만드는 것입니다.필요한 커널..

programing 2023.10.26

Realize 클래스 프로시저가 정의되지 않았습니다.

Realize 클래스 프로시저가 정의되지 않았습니다. 저는 제가 어떻게 그 오류에 대한 해결책을 찾았는지를 공유하고 싶습니다. Realize 클래스 프로시저가 정의되지 않았습니다. X/Motif C 애플리케이션을 실행할 때.온라인 검색 중에 이 문제에 대한 참조가 하나만 발견되었고 해결책이 없어 이 글을 올립니다. 문제를 해결할 수 있었고, 이 문제를 다시 발견할 경우 결과를 공유하고 싶었습니다(참고:제 솔루션이 항상 이런 유형의 오류를 해결할 것이라고 말하는 것은 아닙니다. 문제 모티프와 X 고유의 툴킷을 사용한 간단한 C 프로그램을 실행하다가 이 문제를 발견했습니다. $ gcc -Wall -c push.c $ gcc -Wall -o push push.o -lXt -lXm $ ./push Error: ..

programing 2023.10.26

상수 함수에 대한 포인터의 의미는 무엇입니까?

상수 함수에 대한 포인터의 의미는 무엇입니까? 포인터는 변이 가능한(비정규) 데이터를 가리킨다고 선언하거나 상수 데이터를 가리킨다고 선언할 수 있습니다. 함수를 가리키도록 포인터를 정의할 수 있습니다. 동료들과 저는 "const"의 사용에 대해 의견을 나누다가 사용에 대한 질문이 나왔습니다.const함수 포인터를 사용합니다. 다음은 몇 가지 질문입니다. 상수 함수에 대한 포인터 대 비 상수 함수에 대한 포인터의 의미는 무엇입니까? 함수가 상수가 될 수 있습니까? 함수가 non-const (mutable)이 될 수 있습니까? 함수 포인터를 통과하는 데 적합한(안전한) 구문은 무엇입니까? 편집 1: 함수 포인터 구문 typedef void (*Function_Pointer)(void); // Pointer ..

programing 2023.10.21

strcpy()/strncpy()는 유닉스에서 최적화를 설정할 때 여분의 공간이 있는 구조 부재에서 충돌합니까?

strcpy()/strncpy()는 유닉스에서 최적화를 설정할 때 여분의 공간이 있는 구조 부재에서 충돌합니까? 프로젝트를 쓸 때, 저는 이상한 문제에 부딪혔습니다. 문제를 다시 만들기 위해 작성한 최소한의 코드입니다.저는 의도적으로 공간을 충분히 할당한 다른 것 대신 실제 문자열을 저장하고 있습니다. // #include #include #include #include #include // For offsetof() typedef struct _pack{ // The type of `c` doesn't matter as long as it's inside of a struct. int64_t c; } pack; int main(){ pack *p; char str[9] = "aaaaaaaa"; // I..

programing 2023.10.11