Почему я получаю синтаксическую ошибку для моего объявления заголовка C?Синтаксис C - ошибка C2143: синтаксическая ошибка: отсутствует ')' before '*'
Вот мой файл заголовка, 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), то ошибки исчезают. Какова синтаксическая ошибка?
Там нет такого понятия, как '' bool' в C' (89). Вы хотите скомпилировать код 'C' с помощью Visual Studio, тогда вам нужно написать код' C', а не 'C++ '. – PaulMcKenzie
Похоже, что 'bool' - это, вероятно, проблема: http://stackoverflow.com/a/18042253 – jonhopkins
@PaulMcKenzie:' bool' - это сопоставление макросов ** стандартного типа ** '_Bool'. и есть рекомендации не переопределять 'bool' и т. д. в приложении. И C не C89, а стандартный C, который является ** только ** C11. – Olaf