首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:数据定义没有类型或存储类= flite编译警告

警告:数据定义没有类型或存储类= flite编译警告
EN

Stack Overflow用户
提问于 2011-12-14 23:38:18
回答 2查看 5.7K关注 0票数 0

vi示例.c

代码语言:javascript
复制
#include<stdio.h>
#include "flite.h"
register_cmu_us_kal();
int main(int argc,char** argv)
{
 cst_voice *v;
 if(argc!=2)
 {
  fprintf(stderr,"usage:file_test FILE\n");
  exit(-1);
 }
 flite_init();
 v=register_cmu_us_kal(NULL);
 flite_file_to_speech(argv[1],v,"play");
 return 0;
}

编译:桌面:

代码语言:javascript
复制
~/flite-1.4-release$ gcc example.c -I./include/ -L./build/i386-linux-gnu/lib -lflite -lflite_cmu_us_kal -lflite_cmulex -lflite_usenglish -lflite_cmu_us_rms -lflite_cmu_time_awb -lflite_cmu_us_slt -lflite_cmu_us_awb -lm -o example


example.c:3: warning: data definition has no type or storage class
example.c: In function ‘main’:
example.c:13: warning: assignment makes pointer from integer without a cast

我已经浏览了下面lib文件夹的内容。

桌面:

代码语言:javascript
复制
~/flite-1.4-release$ ls
ACKNOWLEDGEMENTS  config.guess   configure     example          flite.sln   lang      mkinstalldirs  src        wince
bin               config.log     configure.in  example.c        -I          main      palm           testsuite  windows
build             config.status  COPYING       Exports.def      include     Makefile  README         test.txt
config            config.sub     doc           fliteDll.vcproj  install-sh  missing   sapi           tools

桌面:

代码语言:javascript
复制
~/flite-1.4-release/build/i386-linux-gnu/lib$ ls
libflite.a                      libflite_cmu_us_awb.shared.a    libflite_cmu_us_kal.so.1      libflite.shared.a
libflite_cmulex.a               libflite_cmu_us_awb.so          libflite_cmu_us_kal.so.1.4    libflite.so
libflite_cmulex.shared.a        libflite_cmu_us_awb.so.1        libflite_cmu_us_rms.a         libflite.so.1
libflite_cmulex.so              libflite_cmu_us_awb.so.1.4      libflite_cmu_us_rms.shared.a  libflite.so.1.4
libflite_cmulex.so.1            libflite_cmu_us_kal16.a         libflite_cmu_us_rms.so        libflite_usenglish.a
libflite_cmulex.so.1.4          libflite_cmu_us_kal16.shared.a  libflite_cmu_us_rms.so.1      libflite_usenglish.shared.a
libflite_cmu_time_awb.a         libflite_cmu_us_kal16.so        libflite_cmu_us_rms.so.1.4    libflite_usenglish.so
libflite_cmu_time_awb.shared.a  libflite_cmu_us_kal16.so.1      libflite_cmu_us_slt.a         libflite_usenglish.so.1
libflite_cmu_time_awb.so        libflite_cmu_us_kal16.so.1.4    libflite_cmu_us_slt.shared.a  libflite_usenglish.so.1.4
libflite_cmu_time_awb.so.1      libflite_cmu_us_kal.a           libflite_cmu_us_slt.so
libflite_cmu_time_awb.so.1.4    libflite_cmu_us_kal.shared.a    libflite_cmu_us_slt.so.1
libflite_cmu_us_awb.a           libflite_cmu_us_kal.so          libflite_cmu_us_slt.so.1.4

请帮我解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-14 23:41:50

您可以通过更改方法声明来修复此问题:

代码语言:javascript
复制
register_cmu_us_kal();

代码语言:javascript
复制
cst_voice *register_cmu_us_kal();

这告诉编译器,register_cmu_us_kal();方法返回一个cst_voice *,而不是默认的int,当您指定以下内容时:

代码语言:javascript
复制
v = register_cmu_us_kal(NULL);

首先,调用带参数的函数,而不带参数地定义函数;其次,它警告您正在尝试将int分配给cst_voice *

票数 2
EN

Stack Overflow用户

发布于 2011-12-14 23:40:50

下面声明一个函数,该函数接受未指定的参数并返回int

代码语言:javascript
复制
register_cmu_us_kal();

调用它时,将其结果赋给cst_voice*类型的变量

代码语言:javascript
复制
v=register_cmu_us_kal(NULL);

编译器会就此转换向您发出警告。

我认为最好的做法是为register_cmu_us_kal提供一个合适的原型(也许通过包含相关的头文件)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8507257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档