프로그램을위한 일종의 프론트 엔드를 만들고 있습니다. 프로그램을 시작하기 위해 나는 CreateProcess()
무엇보다도 STARTUPINFO
구조에 대한 포인터를받는 호출을 사용하고 있습니다. 내가 사용했던 구조를 초기화하려면 :
STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
이러한 경고 세트를 활성화하는 GCC로 프로그램을 컴파일 할 때 -Wall -Wextra
첫 번째 줄을 가리키는 누락 된 초기화 프로그램이 있다는 경고가 표시됩니다.
warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
그래서 결국 :
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
이런 식으로 컴파일러는 경고를하지 않습니다. 문제는 구조를 초기화하는 이러한 방법의 차이점은 무엇입니까? 첫 번째 방법을 사용하면 구조가 초기화되지 않습니까? 어느 것을 추천 하시겠습니까?
struct struct_with_four_fields x = {1, 2, 3};
보냅니다. 멤버 4 개 중 3 개만 초기화됩니다.