На самом деле работает для меня:
bash $ cat bar.c
#include <stdio.h>
void somefun (unsigned int nState)
{
switch (nState) // <-- Crashes on this line
{
//
// functionality here ...
//
default:
printf("Hello?\n");
}
}
int main (int argc, char *argv [])
{
enum {
UNDEFINED = -1,
STATE_NICE,
STATE_GREEDY
} E_STATE;
somefun (STATE_NICE);
return 0;
}
bash $ gcc -Wall bar.c -o bar
bar.c: In function 'main':
bar.c:22: warning: unused variable 'E_STATE'
bash $ ./bar
Hello?
bash $
Сделал пару изменений, но без них. (1) добавил тег в коммутатор, чтобы он имел что-то; (2) добавили #include <stdio.h>
и printf
, чтобы я мог сказать, что он запущен; (3) добавлен return 0;
для устранения неинтересного предупреждения.
Он успешно работал без изменений, просто ничего не видно.
Итак, что такое ОС, какова аппаратная архитектура?
Обновление
Код изменился, пока я его пробовал, поэтому вот тест обновленной версии:
bash $ cat bar-prime.c
#include <stdio.h>
void somefun (unsigned int nState)
{
switch (nState) // <-- Crashes on this line
{
//
// functionality here ...
//
default:
printf("Hello?\n");
}
}
enum {
UNDEFINED = -1,
STATE_NICE,
STATE_GREEDY
} E_STATE;
int main (int argc, char *argv [])
{
somefun (STATE_NICE);
return 0;
}
bash $ gcc -Wall bar-prime.c -o bar-prime && ./bar-prime
Hello?
bash $
Все еще работает. Вы получаете основной файл в вашей версии? Вы пытались получить трассировку стека?