Linux 2.6 커 널 - 구조 초기 화

2254 단어 linux
Linux 커 널 에 대량의 구조 체 를 사 용 했 고 인 코딩 규범 에서 도 구조 체 초기 화 규칙 을 제시 했다. 이 글 에서 이에 대한 설명 이 있다. http://blog.csdn.net/dlutbrucezhang/article/details/10296897 그러나 이 글 에서 사례 분석 을 하지 않 았 다. 다음은 테스트 프로그램 을 썼 다.
 
#include<stdio.h>

#include<string.h>



struct test {

	int test_value1;

	float test_value2;

	char  *test_value3;

};



int main(void)

{

	int i;

	char my_name[] = "DLUTBruceZhang";

	char my_school[] = "DLUT";

	

	for(i = 0; i < 2; i++){

		if (i % 2 == 0){

			struct test my_test = {

				.test_value1 = 10,

				.test_value2 = 10.0,

				.test_value3 = my_name,

			};

			printf("test_value1 = %d, test_value2 = %f,\

					test_value3 = %s
", my_test.test_value1, my_test.test_value2, my_test.test_value3); } else { struct test my_test = { .test_value1 = 100, .test_value2 = 100.0, .test_value3 = my_school, }; printf("test_value1 = %d, test_value2 = %f,\ test_value3 = %s
", my_test.test_value1, my_test.test_value2, my_test.test_value3); } } struct test my_test = { /*.test_value1 = 10,*/ /*.test_value2 = 10.0,*/ /*.test_value3 = my_name,*/ }; printf("test_value1 = %d, test_value2 = %f,\ test_value3 = %s
", my_test.test_value1, my_test.test_value2, my_test.test_value3); return 0; }

      분석:
 
1. 먼저 구조 체 의 정 의 를 내 립 니 다. 세 개의 필드, 하나의 정형, 하나의 부동 소수점, 하나의 문자 포인터 가 포함 되 어 있 습 니 다.
      struct test {int test_value1;float test_value2;char  *test_value3;      };2. 두 번 의 초기 값 을 부여 하고 상황 에 따라 값 을 부여 합 니 다. 할당 방법 은 Linux 커 널 인 코딩 규범 중의 방법 을 사용 합 니 다. (여기 서 식별 자 를 무시 합 니 다)
struct test my_test = {.test_value1 = 10,.test_value2 = 10.0,.test_value3 = my_name,};
struct test my_test = {.test_value1 = 100,.test_value2 = 100.0,.test_value3 = my_school,};
3. 초기 값 을 부여 하지 않 는 경 우 는 정형 기본 값 0, 부동 소수점 기본 값 0.0, 문자 포인터 기본 값 NULL
struct test my_test = {/*.test_value1 = 10,*//*.test_value2 = 10.0,*//*.test_value3 = my_name,*/};
      다음은 이 테스트 프로그램 을 실행 하여 상술 한 설명 을 검증 합 니 다.

좋은 웹페이지 즐겨찾기