c - 代码行没有进入 de switch-case

标签 c programming-languages

我开始使用C语言,但是到现在我有一些错误,我得到了一个代码但是当我运行它时,他突然回到开头没有进入swicth-case,我该怎么办为了解决这个问题,我正在使用 Microchip 的 PIC18f4550 以及 MPLAB 和 C18 编译器。感谢您的时间和考虑。她的代码:

void SECUENCIA_1();
void SECUENCIA_2();
void SECUENCIA_3();
void SECUENCIA_4();
void SECUENCIA_5();
void SECUENCIA_6();
void SECUENCIA_ERROR();
void SALIDA_OK();
int i;
unsigned char COMBINACION;

void main(void) {
ADCON1 = 0x0F;
PORTA  = 0x00;
TRISA  = 0b00000;
PORTC  = 0x00;
TRISC  = 0b11100000;
PORTD  = 0x00;
TRISD  = 0b110000;
PORTE  = 0x00;
TRISE  = 0b000;
PORTB  = 0x00;
TRISB  = 0b11111111; 


COMBINACION = 0x00;
COMBINACION = COMBINACION | (PORTCbits.RC5);
COMBINACION = COMBINACION << 1;
COMBINACION = COMBINACION | (PORTCbits.RC4);
COMBINACION = COMBINACION << 1;
COMBINACION = COMBINACION | (PORTDbits.RD3);


switch (COMBINACION)
{
case 0x0: SECUENCIA_ERROR; break;
case 0x1: SECUENCIA_1; break;
case 0x2: SECUENCIA_2; break;
case 0x3: SECUENCIA_3; break;
case 0x4: SECUENCIA_4; break;
case 0x5: SECUENCIA_5; break;
case 0x6: SECUENCIA_6; break;
default:SECUENCIA_ERROR;
}
}
.
.
.
.

代码在这句话之后继续,但我不知道为什么它只在设置“COMBINACION”的最后一个值后返回

最佳答案

您的函数调用中缺少 ()

如果没有 (),函数名将被视为函数指针而不是 C 中的函数调用。

所以像这样添加():

switch (COMBINACION)
{
    case 0x0: SECUENCIA_ERROR(); break;
    case 0x1: SECUENCIA_1(); break;
    case 0x2: SECUENCIA_2(); break;
    case 0x3: SECUENCIA_3(); break;
    case 0x4: SECUENCIA_4(); break;
    case 0x5: SECUENCIA_5(); break;
    case 0x6: SECUENCIA_6(); break;
    default:SECUENCIA_ERROR();
}

关于c - 代码行没有进入 de switch-case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287378/

相关文章:

c - gdbserver --> 回复包含无效字符

perl - 学习编程范式的能力会受到文化或母语语法的影响吗?

programming-languages - 当我想编写视频处理应用程序时,是否有合适的 C++ 替代品?

language-agnostic - Map 键和值之间的符号是否有独立于语言的名称?

c - 无法在Linux中使用C创建链表

将具有动态数组的结构转换为双指针

c - Lua:在 lua 中有效地操作(读/写)C 风格、C 分配的动态数组

c - Visual Studio 6使用的c编译器是什么?

programming-languages - 按编程语言列出的顶级存储库

language-agnostic - 除了 Logo 和 Emacs Lisp,还有哪些纯动态作用域语言?