В C# я могу использовать отражение, чтобы определить, является ли перечислимый тип интервалом, байтом, коротким, и т.д.?

Обновление: Спасибо всем за помощь. Я изменил Makefile, как показано ниже. Вторая проблема теперь исправлена, но первая проблема все еще остается.

Каждый раз, когда вызывается правило сборки, все .c файлы перекомпилируются. Я думал, что компиляция только измененных файлов является основной целью / преимуществом использования make. Так что что-то не так, но, к сожалению, я не нахожу ошибку.

#***************PROJECT INFORMATIONS****************
PROJECT_NAME = stm8template
MODULES = stm8

#****************SET BUILD MODE*********************
ifeq ($(MODE), )
    MODE=Debug
endif

#***************DIRECTORY INFORMATION***************
SRCDIR = src
INCLUDES = includes

#**************HELPER FUNCTIONS*********************
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))

#***************FILE SPECIFICATIONS***************
SOURCE_FILES = $(foreach d, $(call rwildcard,$(SRCDIR),*.c), $(notdir $d))
OBJECT_FILES = $(patsubst %.c, %.o, $(call rwildcard,$(SRCDIR),*.c))
HEADER_FILES = $(wildcard $(INCLUDES)/*.h) $(wildcard $(INCLUDES)/**/*.h)
INCLUDE_DIRS_PARAM=$(foreach d, $(MODULES), -iincludes/$d) -iincludes -iC:\Hstm8

#***************COMPILER INFORMATIONS***************
CC = cxstm8
LIBS = -l +mods0
ifeq ("$(MODE)","Debug")
  CFLAGS = $(INCLUDE_DIRS_PARAM) -cl$(OUTPUT_DIR) -co$(OUTPUT_DIR) -pxp -no -pp +debug 
else
  CFLAGS = $(INCLUDE_DIRS_PARAM) -cl$(OUTPUT_DIR) -co$(OUTPUT_DIR) -pxp -no -pp
endif

#***************LINKER INFORMATIONS***************
LINKFILE=$(OUTPUT_DIR)\$(PROJECT_NAME).lkf
LFLAGS = -LC:\Lib

#*******************OUTPUT FILES********************
OUTPUT_DIR = bin/$(MODE)
OUTFILE=$(PROJECT_NAME)
OUTFILE.sm8 = $(OUTPUT_DIR)\$(OUTFILE).sm8
OUTFILE.s19 = $(OUTPUT_DIR)\$(OUTFILE).s19
OUTFILE.map = $(OUTPUT_DIR)\$(OUTFILE).map
TARGET_FILE=$(OUTPUT_DIR)\$(PROJECT_NAME).elf

#*************FLASHER CONFIGURATIONS***************
FLASHER_PATH="C:\Program Files (x86)\STMicroelectronics\st_toolset\stvp\STVP_CmdLine.exe"
DEVICE := STM8S105x6
PORT=USB
PROG_MODE=SWIM
BOARD_NAME=ST-LINK
FLASHER_PARAM = -no_loop

#***************BUILT TARGETS***************
.PHONY: all run build clean
all: build run

%.o: %.c
  $(info ********** Compile [110]lt; ***********)
  $(CC) $(CFLAGS) $(LIBS) [110]lt;

build: $(OUTPUT_DIR)\$(PROJECT_NAME).elf

$(TARGET_FILE): $(OBJECT_FILES)
  $(info ********** Build the Application ***********)
  clnk -m $(OUTFILE.map) -o $(OUTFILE.sm8) $(LINKFILE)
  cvdwarf $(OUTFILE.sm8) 
  chex -o $(OUTFILE.s19) $(OUTFILE.sm8)

run:
  $(info ********** Flashing the Application ***********)
  $(FLASHER_PATH) -BoardName=$(BOARD_NAME) -Device=$(DEVICE) -Port=$(PORT) -ProgMode=$(PROG_MODE) -FileProg="$(OUTPUT_DIR)\$(OUTFILE).s19" $(FLASHER_PARAM) 
27
задан Carlo V. Dango 30 March 2014 в 19:12
поделиться

1 ответ

Попробуйте это:

Enum.GetUnderlyingType(typeof(YourEnum))
47
ответ дан Andrew Hare 28 November 2019 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: