mpg123_open()和康斯特
mpg123_open() and Const
我是 c++ 编程的新手,我基本上试图使用 mpg3 制作一个简单的 mp123 播放器,代码在 main() 中效果很好,但是当我尝试在 sub 中调用它并提交路径+文件播放时,我只是无法让它工作。
GCC抱怨常量字符...和字符转换.."1.c:71:18:错误:从'char'到'const char*'的转换无效[-fallowive]"
#include <ao/ao.h>
#include <mpg123.h>
#define BITS 8
#include <iostream>
using namespace std;
void playaudio(const char * trakl)
{
//works when called here including path
//const char *traklink="/home/pi/downloads/00000050.mp3";
const char * traklink=trakl;
mpg123_handle *mh;
unsigned char *buffer;
size_t buffer_size;
size_t done;
int err;
int driver;
ao_device *dev;
ao_sample_format format;
int channels, encoding;
long rate;
/* if(argc < 2)
exit(0);
*/
/* initializations */
ao_initialize();
driver = ao_default_driver_id();
mpg123_init();
mh = mpg123_new(NULL, &err);
buffer_size = mpg123_outblock(mh);
buffer = (unsigned char*) malloc(buffer_size * sizeof(unsigned char));
/* open the file and get the decoding format */
//mpg123_open(mh,traklink);
mpg123_open(mh,traklink);
mpg123_getformat(mh, &rate, &channels, &encoding);
/* set the output format and open the output device */
format.bits = mpg123_encsize(encoding) * BITS;
format.rate = rate;
format.channels = channels;
format.byte_format = AO_FMT_NATIVE;
format.matrix = 0;
dev = ao_open_live(driver, &format, NULL);
/* decode and play */
while (mpg123_read(mh, buffer, buffer_size, &done) == MPG123_OK)
//ao_play(dev, buffer, done);
ao_play(dev, (char*)buffer, done);
/* clean up */
free(buffer);
ao_close(dev);
mpg123_close(mh);
mpg123_delete(mh);
mpg123_exit();
ao_shutdown();
// return 0;
}
int main()
{
const char * trakl="/home/pi/downloads/00000050.mp3";
playaudio(* trakl);
return 0;
}
你这样称呼playaudio
:
playaudio(* trakl);
这是无效的。 trak1
是const char *
型,这意味着*trak1
是const char
型。 playaudio
期望一个const char *
,你应该这样称呼它:
playaudio(trakl);
相关文章:
- 康斯特指针C++斯特劳斯特鲁普
- Static_cast 对于康斯特来说,会抛弃预选赛
- 东康斯泰克普/康斯蒂尼特/康斯特瓦尔在C++20 中允许吗?
- 康斯特正确性建议
- 从字符到康斯特* 字符的转换无效,代码有什么问题?
- T*上的部分排序...和康斯特·
- 调用"树:<int>:运算符==(树*&<int><int>,树*&)康斯特"没有匹配函数
- 抛弃康斯特,就是这种定义明确的行为
- 错误:类型为 '.&' 来自类型的临时 '..*康斯特'
- 无法push_back移动(不可复制与康斯特字段)到矢量
- 传递康斯特字符*的值
- mpg123_open()和康斯特
- 康斯特指针浅拷贝
- C++ wifstream:不兼容的字符常量*,wchar_t康斯特*类型
- 康斯特是谎言吗?(因为康斯特可以被抛弃)
- 康斯特·查尔 * 变得腐败
- 康斯特查尔..改变
- 康斯特与 #define(奇怪的行为)
- 这是抛弃康斯特吗?
- 第二个康斯特在"const int const &someval"做什么?