객관적인 C에서 런타임 중에 값을 열거 형에 할당하는 방법이 있습니까? 저는 열거 형을 여러 개 갖고 있으며 각 열거 형에 특정 값을 지정하려고합니다. 값은 xml 파일에서 읽을 수 있습니다. 이것을 할 수있는 방법이 있습니까?런타임시 enum 값을 변경 하시겠습니까?
6
A
답변
16
Unfortunatley는, @Binyamin이 올바른지, 당신은 열거으로이 작업을 수행 할 수 없습니다. 이러한 이유로, 나는 보통 내 프로젝트에서 다음을 수행하십시오
// in .h
typedef int MyEnum;
struct {
MyEnum value1;
MyEnum value2;
MyEnum value3;
} MyEnumValues;
// in .m
__attribute__((constructor))
static void initMyEnum()
{
MyEnumValues.value1 = 10;
MyEnumValues.value2 = 75;
MyEnumValues.value3 = 46;
}
이것은 또한 정상적인 열거 가능하지 않은, 값을 반복 할 수 있다는 장점이 있습니다
int count = sizeof(MyEnumValues)/sizeof(MyEnum);
MyEnum *values = (MyEnum *) &MyEnumValues;
for (int i = 0; i < count; i++)
{
printf("Value %i is: %i\n", i, values[i]);
}
을 대체로 C에서 열거 형을 사용하는 것이 좋습니다.
5
아니요, 열거 형 정보는 컴파일 할 때 지워집니다.
+4
불행히도이 경우입니다. 그러나 당신은 정보를 보유하려는 경우 열거 형 대신 구조체를 사용할 수 있습니다. –
관련 문제
- 1. enum 값을 추가 하시겠습니까?
- 2. 런타임시 뷰포트 눈금을 변경 하시겠습니까?
- 3. 런타임시 WSDL EndPointAddress의 주소/포트를 변경 하시겠습니까?
- 4. C++ 대신 enum 값을 사용 하시겠습니까?
- 5. 런타임시 FormLayout 정렬 변경
- 6. 런타임시 데이터베이스 구조를 Entity Framework로 변경 하시겠습니까?
- 7. 런타임에 web.config에서 enum 값을 가져옵니다.
- 8. max_heap_table_size 값을 변경 하시겠습니까?
- 9. 구조체의 값을 변경 하시겠습니까?
- 10. 목록의 값을 변경 하시겠습니까?
- 11. 런타임시 코드 변경
- 12. typedef enum, 값을
- 13. enum 유형 값을 변경하십시오.
- 14. codebehind에서 프로세스 값을 변경 하시겠습니까?
- 15. 삽입 태그의 값을 변경 하시겠습니까?
- 16. 런타임시 위젯 배경 변경
- 17. 런타임시 애니메이션 변경
- 18. 런타임시 클래스 유형 변경
- 19. 런타임시 keyboad 언어 변경
- 20. 런타임시 CommonsMultipartResolver의 maxUploadSize 변경
- 21. 런타임시 Qt 언어 변경
- 22. 런타임시 UITextView의 텍스트 변경
- 23. Swing에서 런타임시 로케일 변경
- 24. 런타임시 UIBarButton 식별자 변경
- 25. 런타임시 ListBox의 ItemsPanelTemplate 변경
- 26. 런타임시 시작 페이지 변경
- 27. 런타임시 string.xml 변경
- 28. 런타임시 NSIS 언어 변경
- 29. MVC4에서 런타임시 경로 변경
- 30. 런타임시 언어 변경
@ Richard .. __attribute __ ((생성자)) 무엇인지 설명해 주시겠습니까? 대답 주셔서 감사합니다. –
@learningDroid 대상이로드되기 직전에 호출되는 함수를 만들 수있는 GCC 확장 (dylib에서 dylib의 첫 번째 함수가 실행되기 전에 응용 프로그램에서 'main()'바로 앞에 위치 함) . 매우 유용한 구조이며, 무거운 짐을 들지 않는 한 괜찮을 것입니다. –
구조체의 xum 파일을 읽고 enum에 값을 할당 할 계획입니다. 코드가 실행되는 데 5 초 미만의 시간이 소요되는 한 __attribute 메서드 –