C语法 - 错误C2143:语法错误:缺少')'之前' *'

时间:2016-07-27 18:23:38

标签: c++ c visual-studio-2010

为什么我的C头声明出现语法错误?

这是我的头文件viterbi.h:

#ifndef VITERBI_H
#define VITERBI_H
void vitdec(float* , int , int ,   bool* );
#endif //VITERBI_H

这是我的实施文件,viterbi.c:

// viterbi.c   : Defines the entry point for the console application.
//
#include "viterbi.h"
#include "math.h"
//void vitdec(float* sd, int frameLen, int rate,   bool* hd);

void vitdec(float* sd, int frameLen, int rate,   bool* hd)
{
    //... The rest of the function

Visual Studio 2010编译器中的错误读取:

viterbi.h(4): error C2143: syntax error : missing ')' before '*'
viterbi.h(4): error C2081: 'bool' : name in formal parameter list illegal
viterbi.h(4): error C2143: syntax error : missing '{' before '*'
viterbi.h(4): error C2059: syntax error : ')'
viterbi.h(4): error C2059: syntax error : ';'
viterbi.c(7): error C2065: 'bool' : undeclared identifier
viterbi.c(7): error C2065: 'hd' : undeclared identifier
viterbi.c(7): warning C4552: '*' : operator has no effect; expected operator with side-effect

据我所知/可以说,这是C声明的有效语法。如果我将viterbi.c编译为C ++代码(viterbi.cpp),那么错误就会消失。什么是语法错误?

1 个答案:

答案 0 :(得分:3)

bool不是本机C类型,但对于使用C99的用户,请尝试添加行#include <stdbool.h>,其中包含定义bool的宏。

由于所有Visual Studio / MSVC产品中的C编译器都使用C89,因此根本不为您定义bool,作为本机C类型或其他类型。解决方法包括使用typedefenum来定义bool。示例在以下链接中。

有关详细信息,请参阅:Is bool a native C type?