반응형

C 251

컴파일러가 명백히 초기화되지 않은 변수를 감지하지 못함

컴파일러가 명백히 초기화되지 않은 변수를 감지하지 못함 내가 사용해 본 모든 C 컴파일러는 아래 코드 스니펫에서 초기화되지 않은 변수를 감지하지 못합니다.하지만 이 사건은 명백하다. 이 스니펫의 기능에 대해서는 신경 쓰지 않아도 됩니다.이건 진짜 코드가 아니라서 이 문제를 조사하기 위해 제거했어요. BOOL NearEqual (int tauxprecis, int max, int value) { int tauxtrouve; // Not initialized at this point int totaldiff; // Not initialized at this point for (int i = 0; i < max; i++) { if (2 < totaldiff) // At this point totaldiff i..

programing 2022.06.20

구조체를 0으로 초기화

구조체를 0으로 초기화 내가 이런 구조를 가지고 있다면: typedef struct { unsigned char c1; unsigned char c2; } myStruct; 이 구조를 0으로 초기화하는 가장 쉬운 방법은 무엇입니까?다음 내용으로 충분할까요? myStruct _m1 = {0}; 아니면 각 멤버를 0으로 명시적으로 초기화해야 합니까? myStruct _m2 = {0,0}; 첫 번째는 가장 쉽고(타자를 적게 입력) 동작할 수 있습니다.모든 멤버는 다음과 같이 설정됩니다.0를 클릭합니다[Ref 1]. 두 번째는 더 읽기 쉽다. 선택은 사용자의 선호도 또는 코딩 표준에서 요구하는 선호도에 따라 달라집니다. [참조 1] 참조 C99 표준 6.7.8.21: 괄호로 둘러싸인 리스트 내의 이니셜라이저가 ..

programing 2022.06.19

디렉토리가 존재하는지 확인하려면 어떻게 해야 하나요?

디렉토리가 존재하는지 확인하려면 어떻게 해야 하나요? C에 Linux에 디렉토리가 있는지 확인하려면 어떻게 해야 합니까?를 사용하여 확인할 수 있습니다.ENOENT == errno장애 발생 시: #include #include DIR* dir = opendir("mydir"); if (dir) { /* Directory exists. */ closedir(dir); } else if (ENOENT == errno) { /* Directory does not exist. */ } else { /* opendir() failed for some other reason. */ } 다음 코드를 사용하여 폴더가 있는지 확인합니다.Windows 플랫폼과 Linux 플랫폼 모두에서 동작합니다. #include #in..

programing 2022.06.18

Linux에서 블루투스/블루투스.h는 어디에 있습니까?

Linux에서 블루투스/블루투스.h는 어디에 있습니까? Bluetooth.h 파일을 Bluetooth로 작성하고 싶은데 시스템에 없는 것 같습니다. fatal error: bluetooth/bluetooth.h: No such file or directory Bluetooth 동글은 정상적으로 동작하고 있으며, Bluetooth는 정상적으로 구축되어 있습니다. 갱신하다 제 경우 /user/include/bluetooth 폴더에 bluetooth.h가 있습니다.코드를 컴파일하려면 libbluetooth-dev 패키지를 설치해야 합니다. sudo apt-get install libbluetooth-dev 그러면 Bluetooth 헤더 파일이 설치됩니다.Fedora의 경우 다음을 사용할 수 있습니다. sudo..

programing 2022.06.18

Linux에서 getch() & getche()에 해당하는 것은 무엇입니까?

Linux에서 getch() & getche()에 해당하는 것은 무엇입니까? conio에 해당하는 헤더 파일을 찾을 수 없습니다.h(Linux의 경우). 에 대한 옵션이 있습니까?getch()&getche()Linux에서 작동합니까? 스위치 케이스 베이스 메뉴를 만들고 싶다.키 1개를 누르는 것만으로, 조작을 진행할 수 있다.사용자가 선택을 누른 후 ENTER를 누르도록 하고 싶지 않습니다.#include #include static struct termios old, current; /* Initialize new terminal i/o settings */ void initTermios(int echo) { tcgetattr(0, &old); /* grab old terminal i/o setting..

programing 2022.06.18

Linux에서 인터페이스의 IP 주소를 가져옵니다.

Linux에서 인터페이스의 IP 주소를 가져옵니다. Linux 상의 인터페이스의 IPv4 주소를 C 코드에서 취득하려면 어떻게 해야 합니까? 예를 들어, eth0에 할당된 IP 주소(있는 경우)를 얻고 싶습니다.이것을 시험해 보세요. #include #include #include /* for strncpy */ #include #include #include #include #include #include int main() { int fd; struct ifreq ifr; fd = socket(AF_INET, SOCK_DGRAM, 0); /* I want to get an IPv4 IP address */ ifr.ifr_addr.sa_family = AF_INET; /* I want IP addres..

programing 2022.06.18

C 프리프로세서: #warning으로 매크로를 전개합니다.

C 프리프로세서: #warning으로 매크로를 전개합니다. #warning 명령어로 매크로 값(매크로 확장)을 인쇄하고 싶습니다. 예를 들어 코드의 경우: #define AAA 17 #warning AAA = ??? 원하는 컴파일 시간 출력은 다음과 같습니다. warning: AAA = 17 어떤 용도로 사용합니까?또는 코드를 확대하려면 어떻게 해야 합니까? 디렉티브는 디렉티브로 사용할 수 있습니다.#pragma message 예: #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) #define AAA 123 #pragma message "content of AAA: " STR(AAA) int main() { return 0; } 출력은 다음과 같습니다. $..

programing 2022.06.18

C의 함수에 전달된 포인터를 수정하려면 어떻게 해야 하나요?

C의 함수에 전달된 포인터를 수정하려면 어떻게 해야 하나요? 구조체 목록에 구조체를 추가하는 다음과 같은 코드가 있습니다. void barPush(BarList * list,Bar * bar) { // if there is no move to add, then we are done if (bar == NULL) return;//EMPTY_LIST; // allocate space for the new node BarList * newNode = malloc(sizeof(BarList)); // assign the right values newNode->val = bar; newNode->nextBar = list; // and set list to be equal to the new head of the..

programing 2022.06.18

C 컴파일러와 C++ 컴파일러는 강제하지 않는데 함수 시그니처에 어레이 길이를 허용하는 이유는 무엇입니까?

C 컴파일러와 C++ 컴파일러는 강제하지 않는데 함수 시그니처에 어레이 길이를 허용하는 이유는 무엇입니까? 학습 기간 중에 발견한 것은 다음과 같습니다. #include using namespace std; int dis(char a[1]) { int length = strlen(a); char c = a[2]; return length; } int main() { char b[4] = "abc"; int c = dis(b); cout = 20그 후 실제로 후속 행(또는 어레이 전체의 끝)에 인덱스를 붙입니다. sizeof(args[0])하다, 반환하다80sizeof(int) == 4, 만약 sizeof(args)컴파일러 경고는 다음과 같습니다. foo.c:5:27: warning: sizeof on a..

programing 2022.06.18

C 프로그래밍에서의 보이드 포인터의 개념

C 프로그래밍에서의 보이드 포인터의 개념 C 프로그래밍 언어로 타이프 캐스팅 없이 보이드 포인터를 참조 해제할 수 있습니까? 또, 포인터를 수신해 보이드 포인터에 격납할 수 있는 기능을 일반화해, 그 보이드 포인터를 이용해 일반화 기능을 만들 수 있는 방법은 없는가. 예: void abc(void *a, int b) { if(b==1) printf("%d",*(int*)a); // If integer pointer is received else if(b==2) printf("%c",*(char*)a); // If character pointer is received else if(b==3) printf("%f",*(float*)a); // If float pointer is received } if-el..

programing 2022.06.17
반응형