Нельзя преобразовать строку в перечисление, подобное этому. Вы просто конвертируете указатель на строку в char
. Что не получается.
Одна альтернатива (помимо сравнения первого аргумента с strcmp
), чтобы избежать этого, - дать символьное значение вашим перечислителям:
typedef enum { CPU='C', OPENMP='O' } MODE;
и теперь вы можете выбрать первую букву первого аргумента и преобразовать ее:
MODE execution_mode = (MODE)argv[1][0];
Буквы, конечно, должны быть разными. И проверьте argc>1
, чтобы убедиться, что argv[1]
действительно, конечно,
Если вы хотите полное совпадение строк, у вас нет другого выбора, кроме как использовать strcmp
:
const char *execution_mode = argv[1];
if (strcmp(execution_mode,"CPU")==0)
{
// do something
}
else if (strcmp(execution_mode,"OPENMP")==0)
{
// do something else
}