繁体   English   中英

c++ 在 Windows 上使用带有 Mingw 编译器的 iconv

[英]c++ using of iconv on Windows with Mingw compiler

一天中的好时光!

我在 Ubuntu 上用 g++ 4.7.2 成功编译了这段代码,但在 Windows 上用 Mingw 编译它时遇到了问题。

简化代码:

 size_t string_length=some_size;
 char arr_symb[string_length+1];

 char *outputde=arr_symb;
 iconv_t type=iconv_open("UTF-8","WINDOWS-1251");

char output[some_size];

char *p1=arr_symb;
char *p2=output;

if (   iconv(type, &p1,&string_length, &p2, &output_length ) == -1 )// here 
        // is mistake, it doesn't like pointers p1 and p2 but I wonder why

  log_info("something went wrong");

在带有 G++ 的 Linux 上,它可以被编译并正常工作。 使用 Mingw 我得到错误:

在此处输入图片说明

我想知道,如果它与 g++ 一起工作正常,为什么 mingw 将它视为错误?

提前致谢!

添加
我的 Mingw 版本是 4.4.0
GCC 版本是 4.7.2

谢谢大家的关注,问题解决了,不过我觉得很奇怪(目前还不清楚)

虽然函数有这样的原型,

在此处输入图片说明

使用 MinGW 应该这样称呼它:

在此处输入图片说明

所以,问题是 MinGW 的输入字符串应该作为常量传递(它也没有这样的原型)。

请参阅这些声明:

  int  a[10];
  int* b = malloc(10 * sizeof(int));

外观和感觉相同,但是:

指向整数数组 (*b) 的指针与整数数组 (a) 不同! 所以指向数组的指针 (*) 也不同于指向指针 (**) 的指针!

指针的解引用需要再上一层!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM