C 38

메모리의 지정된 절대 주소에 변수를 배치하는 방법(GCC 사용)

메모리의 지정된 절대 주소에 변수를 배치하는 방법(GCC 사용) RealView ARMC 컴파일러는 변수 속성을 사용하여 주어진 메모리 주소에 변수를 배치하는 것을 지원합니다.at(address): int var __attribute__((at(0x40001000))); var = 4; // changes the memory located at 0x40001000 GCC도 비슷한 변수 속성을 가지고 있습니까?잘 모르겠지만 다음과 같은 해결 방법을 쉽게 만들 수 있습니다. int *var = (int*)0x40001000; *var = 4; 완전히 같은 것은 아니지만 대부분의 상황에서 완벽한 대체물이 됩니다.이것은 GCC 뿐만 아니라 어떤 컴파일러와도 작동할 것입니다. GCC를 사용하는 경우 GNU ld도..

programing 2023.09.21

C 프로그래밍 및 TDD

C 프로그래밍 및 TDD 테스트 중심 개발은 OOO로 제한됩니까?아니면 절차 언어와 함께 사용하는 것이 가능/유용합니까?앞으로 몇 주 안에 C에서 더 큰 프로젝트를 시작해야 하는데 어떻게 개발할지 생각 중입니다.TDD는 설계 패러다임이므로 특정 프로그래밍 패러다임과 연결되지 않습니다. 간단히 말하면 코드를 쓰기 전에 코드에 대한 테스트를 작성하는 것입니다. C(볼링 게임 카타)를 사용한 TDD에 대한 슬라이드 덱을 보십시오.Test Driven Development는 테스트 패턴부터 시작하여 테스트를 통과할 때까지 기능을 구축하는 코드를 개발하는 것을 의미합니다.이것은 어떤 프로그래밍 패러다임에도 똑같이 적용 가능합니다. 구조화/절차화, 객체 지향성, 기능성 -- 입력과 출력을 취할 수 있는 모든 것을 ..

programing 2023.09.21

C 면접시험의 '조건'은 무엇입니까?

C 면접시험의 '조건'은 무엇입니까? 프린트가 가능할까요?Hello싱글을 두번 사용condition? if "condition" printf ("Hello"); else printf("World"); if ( printf("Hello") == 0 ) printf ("Hello"); else printf ("World"); :-)"condition" === (printf("Hello"), 0) 정말 썰렁하네요. int main() { if (printf("Hello"), 0) printf ("Hello"); else printf("World"); } 저는 반환 값을 조회할 필요가 없기 때문에 쉼표 연산자를 사용하는 것을 선호합니다.printf조건이 무엇을 하는지 알기 위해서입니다.이는 가독성과 유지보수성을..

programing 2023.09.21

디렌트 구조의 구성원

디렌트 구조의 구성원 저는 distent.h 라이브러리로 작업을 시작했고 제 책에서 distent *p->d_name 구조를 가진 "struct distent" 구조의 매우 유용한 멤버를 발견했습니다.그러나 유감스럽게도 이 구조의 다른 구성원들에 대해서는 언급되어 있지 않습니다. 이 구조물의 부재들은 또 어떤 용도로 사용되고 있는지 궁금합니다. 안부 전해요구조는,struct dirent디렉토리 항목을 참조합니다. http://www.gnu.org/software/libc/manual/html_node/Directory-Entries.html 리눅스에서는 다음과 같이 정의됩니다. struct dirent { ino_t d_ino; /* inode number */ off_t d_off; /* offset ..

programing 2023.09.21

서명된 int와 서명되지 않은 int 사이의 캐스트는 메모리에서 변수의 정확한 비트 패턴을 유지합니까?

서명된 int와 서명되지 않은 int 사이의 캐스트는 메모리에서 변수의 정확한 비트 패턴을 유지합니까? 32비트 부호 정수를 전달하고 싶습니다.x콘센트를 통하여수신자가 예상되는 바이트 순서를 알고자 전화를 걸었습니다.htonl(x)보내기 전에htonl기대합니다uint32_t하지만, 그리고 내가 캐스팅할 때 무슨 일이 일어나는지 확실히 하고 싶습니다.int32_t에 이르기까지uint32_t. int32_t x = something; uint32_t u = (uint32_t) x; 항상 이런 경우가 있나요?x그리고.u각각은 완전히 똑같을 것입니까?다시 캐스팅하는 것은 어떻습니까? uint32_t u = something; int32_t x = (int32_t) u; 부정적인 가치가 큰 부호 없는 가치에 영향..

programing 2023.09.21

int 배열 초기화

int 배열 초기화 누가 배열을 초기화할 수 있는 방법이 있습니까?ints(어떤 멀티바이트 유형이든 정말 괜찮습니다), 단순히 0이 아닌 값과 1이 아닌 값으로?즉, 각 요소를 개별적으로 수행할 필요 없이 하나의 라이너에서 이 작업을 수행할 수 있는 방법이 있습니까? int arr[30] = {1, 1, 1, 1, ...}; // that works, but takes too long to type int arr[30] = {1}; // nope, that gives 1, 0, 0, 0, ... int arr[30]; memset(arr, 1, sizeof(arr)); // That doesn't work correctly for arrays with multi-byte // types such as i..

programing 2023.09.16

GCC: 상수 변수가 .rodata에 없는 이유

GCC: 상수 변수가 .rodata에 없는 이유 가 GCC 을 라 요 요 라 을 static const에에 .rodata트로).textELF 또는 그러한 파일의 최적화를 위한 세그먼트(segments).하지만 그렇지 않은 것 같습니다. 저는 입니다를 사용하고 .gcc (GCC) 4.7.0 20120505 (prerelease)GNU/Linux가 탑재된 노트북에서 사용할 수 있습니다.ΔΔ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ, .bss세그먼트: /* * this is a.c, and in its generated asm file a.s, the following line gives: * .comm a,4,4 * which would place variable a i..

programing 2023.09.16

먼저 개체 파일에 컴파일해야 하는 이유는 무엇입니까?

먼저 개체 파일에 컴파일해야 하는 이유는 무엇입니까? 작년에 저는 포트란에서 프로그래밍을 시작했습니다. 연구 대학에서 일하고 있습니다.저의 대부분의 이전 경험은 PHP나 오래된 ASP와 같은 웹 언어에 있어서 진술문을 작성하는 것은 처음입니다. 수정하려는 코드가 두 개 있습니다. 실행 파일을 만들기 전에 모듈(예: gfortran -cfilea.f90)에서 .o 파일을 생성하는 명시적 문이 있습니다. 다른 것은 실행 파일을 직접 생성하는 것입니다(때로는 .mod 파일을 생성하지만 gfortran -o 실행 파일 a.f90 fileb.f90 mainfile.f90과 같이 .o 파일은 생성하지 않습니다). 한 가지 방법이 다른 방법보다 선호되는 이유가 있습니까? 먼저 개체 파일에 컴파일하는 것을 별도 컴파일..

programing 2023.09.11

특별한 경우:%보다 빠릅니까?

특별한 경우:%보다 빠릅니까? 저는 이 게시물에 대한 선택된 답변을 보았습니다. 그래서 깜짝 놀랐어요.(x & 255) == (x % 256)만약 x가 부호가 없는 정수라면, 나는 항상 대체하는 것이 말이 되는지 궁금했습니다.%와 함께&인에x % n위해서n = 2^a (a = [1, ...])그리고 x는 양의 정수입니다. 이것은 프로그램이 어떤 가치를 다룰지 알고 컴파일러가 다루지 않기 때문에 인간으로서 나는 결정할 수 있는 특별한 경우이기 때문입니다.프로그램이 모듈로 작업을 많이 사용하는 경우 성능이 크게 향상될 수 있습니까? 물론이죠, 그냥 디스어셈블리를 정리해서 볼 수 있을 겁니다.하지만 이것은 단지 하나의 컴파일러/아키텍처에 대한 제 질문에 대답해줄 뿐입니다.이것이 원칙적으로 더 빠른지 알고 싶습..

programing 2023.09.06