C 61

백슬래시가 포함된 printf의 출력 이해 (\012)

백슬래시가 포함된 printf의 출력 이해 (\012) 이 간단한 코드의 출력을 이해할 수 있도록 도와주시겠습니까? const char str[10] = "55\01234"; printf("%s", str); 출력은 다음과 같습니다. 55 34 문자순서\012문자열 내부는 팔자 탈출 순서로 해석됩니다.값을012팔색조로 해석되는1010진수로, 이는 라인 피드(\n대부분의 터미널에 문자가 표시됩니다. 위키피디아 페이지에서: 팔순 탈출 순서는 다음과 같이 구성됩니다.\그 다음에 한, 두, 세 팔자 숫자가 나옵니다.팔자 탈출 시퀀스는 세 개의 팔자 숫자가 이미 포함되어 있거나 다음 문자가 팔자 숫자가 아닌 경우 종료됩니다. 당신의 수열은 세 개의 유효한 팔자 숫자를 포함하고 있기 때문에, 그것은 그렇게 파싱될 ..

programing 2023.10.27

외부 "C" 선언은 어떻게 작동합니까?

외부 "C" 선언은 어떻게 작동합니까? 프로그래밍 언어 과목을 수강하고 있는데, 우리는 그 프로그램에 대해 이야기하고 있습니다.extern "C"선언. 이 선언은 "C와 C++를 연결한다"는 것 외에 어떻게 더 깊은 수준에서 작동합니까?이것이 프로그램에서 발생하는 바인딩에도 어떤 영향을 미칩니까?extern "C"는 다음 기호가 망가지지 않도록 하기 위해 사용됩니다(decorated). 예: 예를 들어, 우리가 다음 코드를 가지고 있다고 가정해 보겠습니다.test.cpp: extern "C" { int foo() { return 1; } } int bar() { return 1; } .gcc -c test.cpp -o test.o 기호 이름을 살펴봅니다. 00000010T_Z3barv 00000000 T..

programing 2023.10.22

C - R 프로그래머의 경우 - 기본을 초과한 경우 권장 리소스/접근 방법

C - R 프로그래머의 경우 - 기본을 초과한 경우 권장 리소스/접근 방법 문 닫았습니다.이 질문은 책, 도구, 소프트웨어 라이브러리 등에 대한 권장 사항을 찾고 있습니다.충족되지 않습니다.스택 오버플로 지침.현재 답변을 받지 않고 있습니다. 책, 도구, 소프트웨어 라이브러리 등에 대한 추천을 구하는 질문은 허용하지 않습니다.질문을 편집하여 사실과 인용으로 답변할 수 있습니다. 6년전에 문을 닫았습니다. 이 질문을 개선합니다. 이것이 유용할 수 있는 R 코드를 C로 변환하는 능력을 갖추기 위해 C 스킬을 향상시키고 싶습니다.가는 길에 도움이 되는 힌트는 무엇입니까? 배경:저는 몇 년 전에 온라인 C 입문 과정을 따라 다녔는데, 여기에 R 확장 기능과 S 프로그래밍(베너블 & 리플리)을 추가하여 병목 작업..

programing 2023.10.22

Perf 캐시 이벤트란 무엇을 의미합니까?

Perf 캐시 이벤트란 무엇을 의미합니까? 수정된 C 프로그램이 수정되지 않은 상대 프로그램보다 더 빨리 실행되는 이유를 파악하려고 합니다(추가 작업을 수행하기 위해 코드 라인을 거의 추가하지 않고 있습니다).).이런 맥락에서 '캐시 효과'가 주된 설명(명령 캐시)이 아닐까 생각합니다.이렇게 해서 나는.perf(https://perf.wiki.kernel.org/index.php/Main_Page) 프로파일링 도구는 유감스럽게도 캐시 미스에 대한 출력의 의미를 이해할 수 없습니다. 캐시에 관한 몇 가지 이벤트가 제공됩니다. cache-references [Hardware event] cache-misses [Hardware event] L1-dcache-loads [Hardware cache event]..

programing 2023.10.22

일부 매크로의 출처를 찾는 방법

일부 매크로의 출처를 찾는 방법 매크로를 정의하는 데는 여러 곳이 있습니다.매크로를 우리가 자체 프로젝트에서 정의할 때, 매크로는 이들에 대한 정의 위치를 쉽게 찾을 수 있습니다.그러나 유명한 오픈 소스 프로젝트를 배우려고 할 때 매크로의 출처를 어디서 찾을 수 있는지, 매크로의 정의를 얻을 수 없다면 매크로의 일부를 이해할 수 없을 것입니다(예: 매크로의 일부는 이름으로 추측할 수 있습니다).예를 들어 apache의 일부 문: #if defined(__osf__) && defined(__alpha), #elif defined(__NSIG) 제가 아는 바로는 매크로의 발생 가능성이 있다는 것을 알고 있습니다. 이 프로젝트 자체에서, 어떤 소스 파일에서 (어떤 도구로 찾을 수 있기 때문에 이것이 가장 쉽습..

programing 2023.10.22

Null 포인터 주소에 액세스하는 C 표준 준수 방법?

Null 포인터 주소에 액세스하는 C 표준 준수 방법? C에서 null 포인터를 식별하는 것은 Undefined Behavior이지만, null 포인터 값은 일부 아키텍처에서 유효한 주소(예: 주소 0)를 가리키도록 만드는 비트 표현을 가지고 있습니다. 명확하게 하기 위해 이 주소를 널 포인터 주소라고 합니다. 메모리에 대한 접근이 자유로운 환경에서 C로 소프트웨어를 작성하고 싶다고 가정합니다.Null 포인터 주소에 데이터를 쓰고 싶다고 가정해 보겠습니다. 표준 준수 방식으로 이를 달성하려면 어떻게 해야 할까요? 예제 사례(IA32e): #include int main() { uintptr_t zero = 0; char* p = (char*)zero; return *p; } IA32e용 -O3와 함께 g..

programing 2023.10.22

선언 지정자에 둘 이상의 데이터 형식 오류가 있습니다.

선언 지정자에 둘 이상의 데이터 형식 오류가 있습니다. 문 닫았습니다.이 질문은재현성이 없거나 오타로 인해 발생했습니다.현재 답변을 받지 않고 있습니다. 이 질문은 오타나 더 이상 재현할 수 없는 문제로 인해 발생했습니다.비슷한 질문이 여기서 주제가 될 수 있지만, 이 질문은 미래의 독자들에게 도움이 될 가능성이 적은 방식으로 해결되었습니다. 7년전에 문을 닫았습니다. 이 질문을 개선합니다. 저는 C가 처음입니다. 다음 오류가 발생합니다. 내장 함수 'malloc'의 호환되지 않는 암묵적 선언 다음과 같은 답변을 바탕으로 코드를 수정할 때도, 아직도 알 수 있습니다. 선언 지정자의 두 가지 이상의 데이터 유형 이 작업을 수행할 때: struct tnode { int data; struct tnode * ..

programing 2023.10.22

Linking a shared library against a static library: must the static library be compiled differently than if an application were linking it?

Linking a shared library against a static library: must the static library be compiled differently than if an application were linking it? At least on Linux and Solaris, static libraries are really just a bunch of compiled .o's tossed into one big file. When compiling a static library, usually the -fpic flag is ommited, so the generated code is position dependent. Now say my static library is B...

programing 2023.10.22

compound 'if' 조건을 쓰는 더 짧은 방법이 있습니까?

compound 'if' 조건을 쓰는 더 짧은 방법이 있습니까? 이 질문에는 이미 다음과 같은 답변이 있습니다. 여러 가능성에 대한 동일성 검사의 축약어 (3개 답변) 닫힘7년 전에. 대신: if ( ch == 'A' || ch == 'B' || ch == 'C' || ..... 예를 들어, 다음과 같이 하면 됩니다. if ( ch == 'A', 'B', 'C', ... 조건을 요약하는 더 짧은 방법이 있습니까?strchr() 문자가 목록에 있는지 확인하는 데 사용할 수 있습니다. const char* list = "ABCXZ"; if (strchr(list, ch)) { // 'ch' is 'A', 'B', 'C', 'X', or 'Z' } 이 경우 당신은 A를 사용할 수 있습니다.switch: swi..

programing 2023.10.17

setjmp/longjmp 및 지역 변수

setjmp/longjmp 및 지역 변수 제 질문은 지역 변수에 대한 setjmp/longjmp의 행동을 목표로 합니다. 예제 코드: jmp_buf env; void abc() { int error; ... if(error) longjmp(env); } void xyz() { int v1; // non-volatile; changed between setjmp and longjmp int v2; // non-volatile; not changed between setjmp and longjmp volatile int v3; // volatile; changed between setjmp and longjmp volatile int v4; // volatile; not changed between setj..

programing 2023.10.17