3

我在 VS2005 中编译 C++ 项目时遇到 C2440 错误的问题。该错误是由于另一个项目中的一些现有 C 代码,我依赖于它将 void 指针转换为 char 或 int 指针。

代码类似于:

void * bbb;
... // some code which defines the void pointer
int * aaa = bbb;

但是在 C++ 中,我需要专门将类型强制转换为有效,例如:

int * aaa = (int *)bbb;

我的问题是 VS2005 中是否存在一个标志或编译选项,它允许我用 C++ 编译我的主项目,并从我想编译为 C 的依赖项目中忽略这个错误?

我宁愿不更改任何原始来源,因为它是一个共享项目。

4

2 回答 2

2

如果您将文件命名为“something.c”,编译器将 [除非明确告知] 将其编译为C(因此很乐意接受您的指针转换而不使用强制转换)。名为“something.cpp”的文件将被编译为 C++,您需要进行强制转换以将指针转换为不同的类型,即使它是void指针。

于 2013-02-25T00:24:29.253 回答
1

唯一的方法是编辑导致问题的头文件。事实证明,可以将少量文件合并回共享项目。

在 VisualC++ 中无法解决这个问题。我过去常常-fpermissive忽略 gcc 中的错误。

所以我刚刚更新到:

int * aaa = (int *)bbb;
于 2013-02-26T05:43:39.460 回答