반응형

C 43

커널 프로그래밍에서 서명되지 않은 int 대신 u8 u16 u32 u64가 사용되는 이유는 무엇입니까?

커널 프로그래밍에서 서명되지 않은 int 대신 u8 u16 u32 u64가 사용되는 이유는 무엇입니까? 커널 코드에서 사용되고 있는 u8 u16 u32 u64 데이터 타입을 봅니다.그리고 왜 사용해야 하는지 궁금합니다.u8아니면u16아니면u32아니면u64아닌unsigned int?하드웨어에 가까운 작업을 하거나 데이터 구조의 크기/형식을 제어하려고 할 때 정수의 크기를 정확하게 제어해야 하는 경우가 많습니다. 에 관해서는u8대uint8_t, 이것은 단순히 리눅스가 앞선 것이기 때문입니다.기술적으로는 C99-ism이지만, 내 경험으로는 대부분의 현대 컴파일러에서 ANSI-C/C89 모드에서도 사용할 수 있습니다.여기에 제 10센트를 더하면 됩니다. u64는 '부호화되지 않은 64비트' 값을 의미하므로 코드..

programing 2023.10.20

C++에 오버로드 기능이 추가된 이유는 무엇입니까?

C++에 오버로드 기능이 추가된 이유는 무엇입니까? 저는 C학점이 있습니다.C++에 오버로딩 기능이 추가된 이유가 궁금합니다.C는 오버로딩 기능은 없지만 C++는 기능이 있는데 필요한 게 뭐였을까요? 그 당시 언어 디자이너의 머릿속에 떠오른 것은 무엇이었습니까?유지보수성을 높입니다.T형을 가지고 있고 그것으로 함수를 호출하면 T를 변경해야 하고, 새로운 T에 대해 함수가 오버로드되었다면 즉시 다시 컴파일할 수 있습니다.C에서는 다시 돌아가서 모든 통화 사이트를 뒤지고 호출된 기능을 변경해야 합니다.sqrt()를 취합니다.Float를 sqrt()로 변경하려면 sqrtf()로 변경해야 합니다. 뿐만 아니라 C++의 유형 시스템의 볼륨과 복잡성은 C보다 훨씬 더 크며, 가능한 모든 오버로드에 대해 별도의 함수..

programing 2023.10.20

이 문자열 반전 C 코드가 세그먼트 오류를 일으키는 이유는 무엇입니까?

이 문자열 반전 C 코드가 세그먼트 오류를 일으키는 이유는 무엇입니까? 이 질문에는 이미 다음과 같은 답변이 있습니다. 문자열 리터럴로 초기화된 "char *s"에 쓸 때 "chars[]"가 아닌 분할 오류가 발생하는 이유는 무엇입니까? (19개 답변) 닫힘5년 전에. 문자열을 제자리에 되돌리기 위해 코드를 작성하려고 하는데(C 프로그래밍 및 포인터 조작을 더 잘하려고 할 뿐입니다), 왜 분할 오류가 발생하는지 알 수 없습니다. #include void reverse(char *s); int main() { char* s = "teststring"; reverse(s); return 0; } void reverse(char *s) { int i, j; char temp; for (i=0,j = (strl..

programing 2023.10.20

GCC의 __thread는 어떻게 구현됩니까?

GCC의 __thread는 어떻게 구현됩니까? 어떻게 있다.__threadgcc 구현?그냥 포장지 위에 있는 건가요?pthread_getspecific그리고.pthread_setspecific? TLS용 posix API를 사용하는 제 프로그램으로, 제 프로그램 실행 시간의 30%가 사용되는 것을 보고 실망했습니다.pthread_getspecific. 자원이 필요한 각 함수 호출의 입력에 따라 호출했습니다.컴파일러가 최적화되지 않은 것 같습니다.pthread_getspecific인라인 최적화 후에따라서 함수가 인라인된 후 코드는 기본적으로 동일한 포인터를 반환받기 위해 올바른 TLS 포인터를 몇 번이고 검색합니다. 할 것이다__thread이런 상황에서 날 도와줄까요?나는 그것이 있다는 것을 압니다.thr..

programing 2023.10.20

arm-linux-gnueabi-gcc를 사용하는 안드로이드용 정적 Chello world 교차 컴파일

arm-linux-gnueabi-gcc를 사용하는 안드로이드용 정적 Chello world 교차 컴파일 저는 해당 사항에 대해 NDK 독립형 툴체인이나 코드 소스를 사용하는 것이 아니라 arm-linux-gnueabi-gcc를 사용하여 C에서 정적 헬로 월드를 구축하고 싶습니다. Ubuntu에서... 저는 다음과 같은 일을 했습니다. sudo apt-get install gcc-arm-linux-gnueabi 이렇게 하이씨를 만들었어요 #include int main(int argc, char** argv) { printf("hello world\n"); return 0; } 다음과 같이 정리했습니다. arm-linux-gnueabi-gcc -static hi.c -o hi 이런 에뮬레이터로 작동시켰습니..

programing 2023.10.15

C의 부호 없는 16진수 상수?

C의 부호 없는 16진수 상수? C는 16진수 상수를 처리합니까(예:0x23FE지정 또는 비부호 정수?숫자 자체는 항상 음수가 아닌 숫자로 해석됩니다.16진수 상수에는 음수를 표현하는 기호나 고유한 방법이 없습니다.상수의 유형은 값을 나타낼 수 있는 다음 중 첫 번째 유형입니다. int unsigned int long int unsigned long int long long int unsigned long long int 그것은 그들을 취급합니다.int리터럴(basically, assigned int!).서명되지 않은 리터럴을 쓰려면 추가하기만 하면 됩니다.u마지막에: 0x23FEu cppreference에 따르면 16진수 리터럴의 유형은 다음 목록에서 값이 들어갈 수 있는 첫 번째 유형입니다. int ..

programing 2023.10.15

이 비트 와이즈 AND 연산자는 어떻게 숫자의 하위 7개 차수 비트를 마스킹합니까?

이 비트 와이즈 AND 연산자는 어떻게 숫자의 하위 7개 차수 비트를 마스킹합니까? 브라이언 커니건과 데니스 리치의 C 프로그래밍 언어를 읽고 있습니다.비트와이즈 AND 연산자에 대한 설명은 다음과 같습니다. 비트 와이즈 AND 연산자&일부 비트 집합을 마스킹하는 데 자주 사용됩니다. 예를 들어, n = n & 0177 하위 7비트를 제외한 모든 값을 0으로 설정합니다.n. 저는 그것이 어떻게 하위 7개의 주문 비트를 가르고 있는지 잘 모르겠습니다.n. 누가 좀 설명해 주시겠습니까?갯수0177는 아래의 이진 패턴을 나타내는 8진수입니다. 0000000001111111 당신이AND비트 와이즈 연산을 사용하여&, 결과는 원본의 비트를 다음으로 설정된 비트에서만 유지합니다.1"마스크"에서, 다른 모든 비트는 ..

programing 2023.10.10

setuid root C 프로그램에서 스크립트 호출 - 스크립트가 root으로 실행되지 않음

setuid root C 프로그램에서 스크립트 호출 - 스크립트가 root으로 실행되지 않음 bash 스크립트를 root(암호가 없는 sudo 또는 su가 실행 가능하지 않음)으로 실행해야 하는데 Linux에서는 스크립트를 setuid로 설정할 수 없기 때문에 실행 파일에서 호출하여 setuid로 만들까 생각했습니다. $ cat wrapper.c int main(void) { system("/bin/bash ./should_run_as_root.sh"); } $ gcc -o wrapper wrapper.c $ sudo chown root wrapper $ sudo chmod ug+s wrapper $ ll wrapper -rwsr-sr-x 1 root users 6667 2009-02-17 11:11 w..

programing 2023.10.05

코드를 정리하는 가장 좋은 명령줄 도구는 무엇입니까?

코드를 정리하는 가장 좋은 명령줄 도구는 무엇입니까? 제가 C 코드를 쓸 때는 편집기와 gcc만 사용합니다.사용하지 않는 변수, 함수 선언을 찾고 최적화할 수 있는 좋은 간단한 도구를 제안해 줄 수 있는 사람이 있는지 궁금합니다. 좋은 도구 아는 사람?Dan Fego가 지적했듯이 GCC는 사용되지 않는 변수와 사용되지 않는 정적 함수를 잡을 수 있습니다.일반적으로 한 번에 하나의 소스 파일을 작동하기 때문에 사용되지 않는 외부 기능을 찾지 못합니다. GCC(v4.3.2)에는 수천 개는 아니더라도 수백 개의 옵션이 있습니다.도움이 될 수 있는 것은 소스 파일을 결합하는 --combine것입니다(다른 소스 파일 안에 동일한 기능이나 변수 이름을 넣는 습관이 없는 한).(2023-03-10: 에 대한 지원은 ..

programing 2023.10.05

수학의 함수와 프로그래밍의 함수는 어떤 차이가 있습니까?

수학의 함수와 프로그래밍의 함수는 어떤 차이가 있습니까? 수학의 함수와 프로그래밍의 함수는 어떤 차이가 있습니까?기능적 프로그래밍에서는 Reference Transparency(기준 투명도)를 사용할 수 있는데, 이는 프로그램을 변경하지 않고 함수를 해당 값으로 바꿀 수 있음을 의미합니다.이것은 수학에서도 사실이지만 임페리얼 언어에서는 항상 사실이 아닙니다. 수학 함수는 한 집합(A)에서 다른 집합(B)으로 요소를 매핑하여 첫 집합의 각 요소를 다른 집합 중 하나와만 매핑하는 관계로 정의됩니다.C(다른 프로그래밍 언어에서와 마찬가지로)에서도 이는 사실이며 입력 세트와 출력 세트(거의 항상 하나만 있음)가 있습니다. 은라고 ,f(x)수학에서, 당신은 항상 같은 답을 얻을 것입니다, 그러나 만약 당신이 전화..

programing 2023.09.25
반응형