반응형

C 40

관련이 없는 포인터의 동등한 비교가 참으로 평가될 수 있습니까?

관련이 없는 포인터의 동등한 비교가 참으로 평가될 수 있습니까? C 표준의 섹션 6.5.9는 다음과 관련하여==그리고.!=연산자는 다음을 명시합니다. 2 다음 중 하나가 유지되어야 합니다. 두 피연산자 모두 산술 유형을 가집니다. 두 피연산자 모두 호환 가능한 형식의 한정판 또는 비한정판에 대한 포인터입니다. 하나의 피연산자는 객체 형식에 대한 포인터이고, 다른 하나는 void의 한정된 버전 또는 비한정 버전에 대한 포인터입니다. 한 피연산자는 포인터이고 다른 피연산자는 널 포인터 상수입니다. ... 6 두 포인터가 모두 null 포인터인 경우에만 동일하게 비교됩니다. 둘 다 동일한 객체에 대한 포인터입니다. (객체에 대한 포인터와 시작 부분에 있는 하위 객체를 포함합니다.) 또는 함수, 둘 다 동일한 ..

source 2023.06.30

스위치 대/소문자: 오류: 대/소문자 레이블이 정수 상수로 줄어들지 않음

스위치 대/소문자: 오류: 대/소문자 레이블이 정수 상수로 줄어들지 않음 int value; const int signalmin = some_function(); switch(value) { case signalmin: break; } some_function의 값을 읽고 그 int 값을 사용하여 스위치 케이스를 켭니다.C99 컴파일러는 다음을 제공합니다. 오류: 대/소문자 레이블이 정수 상수로 줄어들지 않습니다. 하지만 나는 사용할 수 없습니다.#define스위치가 실행되기 전에 int 값을 읽고 있기 때문입니다.switch레이블은 상수 식이어야 하며 컴파일 시 평가되어야 합니다.런타임 값을 분기하려면 다음을 사용해야 합니다.if. A const-qualified variable은 상수 식이 아니며 수..

source 2023.06.15

어떻게 UBSan 보고서 gdb를 중단하고 계속할 수 있습니까?

어떻게 UBSan 보고서 gdb를 중단하고 계속할 수 있습니까? ( Behavior 으로 합니다.-fsanitize=undefined런타임 계측 코드를 추가합니다.오류가 발생하면 다음과 같은 경고가 표시됩니다. packet-ber.c:165:23: 런타임 오류: 54645397829836991의 8자리 왼쪽 이동은 'longint' 유형으로 나타낼 수 없습니다. 이제 저는 이것을 디버그하고 해당 라인에서 디버그 브레이크를 받고 싶습니다.ASA Sanitizer에는 ASA(Address Sanitizer)가 .ASAN_OPTIONS=abort_on_error=1치명적인 오류가 발생할 수 있습니다.사용 가능한 것으로 보이는 유일한 UBSan 옵션은 보고서에 대한 호출 추적 덤프를 생성하는 것입니다.그러나 이..

source 2023.06.10

C 다중 매크로의 사전 프로세서 테스트 정의

C 다중 매크로의 사전 프로세서 테스트 정의 제가 사이트를 검색했지만 제가 찾던 답을 찾지 못해서 여기에 정말 빠른 질문이 있습니다. 저는 그런 것을 하려고 노력하고 있습니다. #ifdef _WIN32 || _WIN64 #include #endif 제가 어떻게 그런 일을 할 수 있을까요?_WIN32가 32비트와 64비트 창 모두에 대해 정의되어 있다는 것을 알고 있기 때문에 창 감지에 대해서는 어느 쪽이든 괜찮습니다.저는 위와 같은 논리 연산자를 전처리기 지시어와 함께 사용할 수 있는지, 그리고 만약 그렇다면 어떻게 사용할 수 있는지에 더 관심이 있습니다. 왜냐하면 위는 작동하지 않기 때문입니다. gcc로 컴파일하면 다음을 얻을 수 있습니다. 경고: #ifdef 지시어 끝에 추가 토큰이 있으며 기본적으로..

source 2023.06.10

C++의 "-->" 연산자는 무엇입니까?

C++의 "-->" 연산자는 무엇입니까? 에서 C++/STL의 숨겨진 특징 및 어두운 모서리를 읽은 후comp.lang.c++.moderatedVisual Studio 2008 G++ 4.4 양쪽에 컴파일 되어 기능하고 있는 것에 매우 놀랐습니다. 코드는 다음과 같습니다. #include int main() { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } 출력: 9 8 7 6 5 4 3 2 1 0 이것은 GCC에서도 동작하기 때문에 C라고 생각합니다.이것은 표준에서 정의되어 있으며, 어디에서 유래한 것입니까?-->을 사용하다는 두 연산자로 구분되어 있습니다.-- ★★★★★★★★★★★★★★★★★」>. 합니다.x에, 「」를 참조해 주..

source 2023.02.06

GDB를 사용하여 메모리 내용을 수정하는 방법

GDB를 사용하여 메모리 내용을 수정하는 방법 메모리 액세스 및 읽기에는 print, p, x 등 여러 명령을 사용할 수 있습니다. 단, (GDB에서의 디버깅 중) 특정 장소에서 메모리의 내용을 변경하려면 어떻게 해야 합니까? 가장 쉬운 것은 프로그램 변수 설정입니다(GDB: 할당 참조). (gdb) l 6 { 7 int i; 8 struct file *f, *ftmp; 9 (gdb) set variable i = 10 (gdb) p i $1 = 10 또는 주소별로 임의의(쓰기 가능한) 위치를 업데이트할 수도 있습니다. (gdb) set {int}0x83040 = 4 더 있습니다.매뉴얼을 읽어주세요.Nikolai가 말했듯이 gdb 'set' 명령을 사용하여 변수 값을 변경할 수 있습니다. set 명령어를..

source 2023.01.15

한 줄 if 또는 루프에 중괄호(예: {})를 사용하는 목적은 무엇입니까?

한 줄 if 또는 루프에 중괄호(예: {})를 사용하는 목적은 무엇입니까? 저는 C++ 강사의 강의 노트를 읽고 있는데, 그는 다음과 같이 썼습니다. 들여쓰기 사용 // OK 연산자 우선 순위에 의존하지 않음 - 항상 괄호 사용 // OK 한 줄이라도 항상 { } 블록을 사용합니다. // 정상이 아닙니다. 이유는 무엇입니까? 비교 왼쪽에 개체 구성 // OK >= 0 // nice trick인 변수에 부호 없이 사용 삭제 후 포인터를 NULL로 설정 - 이중 삭제 보호 // 나쁘지 않음 세 번째 기술은 명확하지 않습니다: 1개의 라인에 배치하면 무엇을 얻을 수 있습니까?{ ... }무슨 일입니까? 예를 들어 다음과 같은 이상한 코드를 예로 들 수 있습니다. int j = 0; for (int i = 0 ..

source 2022.11.15

const-correct는 컴파일러에 최적화를 위한 더 많은 공간을 제공합니까?

const-correct는 컴파일러에 최적화를 위한 더 많은 공간을 제공합니까? 가독성이 향상되고 프로그램의 에러 발생률이 낮아진다는 것은 알고 있습니다만, 퍼포먼스는 어느 정도 향상됩니까? 그리고 참고로, 레퍼런스와 레퍼런스의 주요 차이점은 무엇입니까?const포인터?기억 속에 저장되는 방식이 다를 것 같은데, 어떻게요?즉석에서 두 가지 경우를 생각할 수 있는데const-qualification은 추가 최적화를 허용합니다(전체 프로그램 분석을 사용할 수 없는 경우). const int foo = 42; bar(&foo); printf("%i", foo); 여기서 컴파일러는 인쇄하는 방법을 알고 있습니다.42몸을 검사할 필요 없이bar()(커런트 변환 유닛에서는 표시되지 않을 수 있습니다)에 대한 모든 ..

source 2022.10.27

Go(Golang)에서 Python 확장자 쓰기

Go(Golang)에서 Python 확장자 쓰기 현재 Cython을 사용하여 C와 Python을 링크하여 Python 코드의 느린 비트로 속도를 높이고 있습니다.단, goroutine을 사용하여 매우 느린(그리고 매우 병렬 가능한) 코드를 구현하고 싶지만 python에서 호출할 수 있어야 합니다.(이 질문은 이미 보았습니다) 필요에 따라 C(또는 Cython)를 경유하여 데이터 구조 등을 셋업할 수도 있지만, 버그 수정/회피 관점에서 이 추가 레이어를 피하는 것이 좋습니다. 바퀴를 재창조하지 않고 이를 수행할 수 있는 가장 간단한 방법은 무엇일까요?업데이트 2015: Go 1.5부터 가능 https://blog.filippo.io/building-python-modules-with-go-1-5/ Go 1..

source 2022.10.26

.c vs .cc vs .cpp vs .hpp vs .cxx

.c vs .cc vs .cpp vs .hpp vs .cxx 이 질문에는 이미 답변이 있습니다. 닫힘11년 전에요. 중복 가능성: 클래스 정의의 *.h 또는 *.hpp 올바른 C++ 코드 파일 확장자? .cc vs .cpp 전에는 이렇게 생각했었는데 .h파일은 C 및 C++용 헤더 파일이며 보통 선언만 포함합니다. .c일 c C로 하다 .cpp파일은 C++ 소스 코드(C 소스 코드일 수도 있음)입니다. 다음 파일, 예를 들어 후, 음, 음, 음, 음 등의 파일..hpp,.cc , , , , 입니다..cxx이것들 어떤 것들들차 ?? ?? ?? ? ?? ?? ??신새새새새새새새새새새새새새새?된 첫 는 "C++"였습니다..c ★★★★★★★★★★★★★★★★★」.h. 이 이 문제는 문제를 ..c빌드 시스템에서 C..

source 2022.10.26
반응형