"名称":模棱两可的符号 视觉工作室 2015

'name': ambiguous symbol VisualStudio 2015

本文关键字:视觉 工作室 2015 符号 名称 模棱两可      更新时间:2023-10-16

我让我的项目迁移到Visual Studio 2015。然而,当我看到收到13个错误时,我卡住了。

错误C2872 'data':有歧义的符号错误C2872 'size':有歧义的符号

在你迁移到vss2015之前一切都很完美,我不明白为什么我们在收到这个错误后移动了程序。

这是我的Jpeg.h

#pragma once
int jpeg_save(unsigned char*data, int width, int height, int quality, const char*filename);
int jpeg_save_to_file(unsigned char*data, int width, int height, int quality, FILE*fi);
int jpeg_save_to_mem(unsigned char*data, int width, int height, int quality, unsigned char*dest, int destsize);
int jpeg_load(const char*filename, unsigned char**dest, int*width, int*height);
int jpeg_load_from_mem(unsigned char*_data, int size, unsigned char*dest, int width, int height);
这里是我的jpeg。cpp
void mem_init_source (j_decompress_ptr cinfo)
{
    struct jpeg_source_mgr* mgr = cinfo->src;
    mgr->next_input_byte = data;
    mgr->bytes_in_buffer = size;
}

我得到了"data"answers"size"符号的错误。

问好。

你的一些函数有名为data和size的局部变量,导致与同名的全局变量冲突。

static unsigned char*data;
static int size;
...
int jpeg_save_to_file(unsigned char*data, int width, int height, int quality, FILE*fi);
int jpeg_load_from_mem(unsigned char*_data, int size, unsigned char*dest, int width, int height);
...

…在编译代码时导致冲突

例如,你有一个全局变量data,然后你有一个名为data的函数参数,所以编译器很困惑该使用哪个-我知道我会。

解决这个问题最简单的方法是在全局变量周围放置一个命名空间,这样当你访问全局变量或局部变量时就更清楚了。

namespace globals
{
  static FILE*fi;
  static JOCTET * buffer;
  static unsigned char*dest;
  static int len;
  static int destlen;
  static unsigned char*data;
  static int pos;
  static int size;
};
...
int jpeg_save(unsigned char*data, int width, int height, int quality, const char*filename)
{
  globals::data = ...;
}

alt。使用未命名的命名空间

namespace
{
  static FILE* fi;
  ...
}
...
::fi = fopen(...);