2010-06-28 105 views
0

我正在尝试集成两个项目,并且为此将头文件从一个项目转移到另一个项目中。我正在使用visual studio 2008 express。头文件在一个项目中抛出错误,但在另一个项目中抛出错误

线

int E4407B_PPM(int &); 

被扔在新项目中的错误,但原来的项目编译就好了。

错误我收到:

error C2143: syntax error : missing ')' before '&' 

任何想法?

编辑:我最终删除了引用参数的行,并确保所有函数都在实际源文件中使用之前进行了声明。我想这是一个C++/C的东西。

+1

在这种情况下,上下文就是一切。此行之前有几行?如果它位于标题顶部附近,请检查以前包含的标题以确保其正确终止(没有未封闭的分隔符等)。另外,您可能会看看宏定义。变量名称是全部大写的,可能已被用作宏名称。 – 2010-06-28 14:39:49

+0

你正在编译其他项目为C还是C++? – Tomek 2010-06-28 14:40:10

+0

我猜这个错误实际上并不在那一行,它只是从那里报告。或许是文件中的错误,或者是在包含此文件之前直接包含的文件错误?预处理器可能会做各种奇怪的事情;没有更多的上下文很难说出发生了什么。 如果您将包含此头文件的include进一步移到includes列表中,是否会更改错误消息? – 2010-06-28 14:41:02

回答

2

您可能正在构建第二个项目(或至少源文件)为直C.确保该文件具有.cpp扩展名或者您正在强制执行C++编译(您可以使用编译选项/TP)那)。

编辑您可以为单个文件指定它:右键单击解决方案资源管理器中的文件并选择属性。点击C/C++下的高级选项。选择“编译为C++代码(/ TP)”(我的Visual Studio版本中的第二个选项)。

+0

强迫整个项目进行编译,因为C++在代码中导致许多问题,这不是我的问题,并且需要很长时间才能跟踪和修复。我可以强制只有一个源文件编译为C++吗? – 2010-06-28 15:04:02

+0

@Colin:是的,您可以为单个文件指定该选项。我会将其添加到答案中。如果你这样做,你可能会由于名称修饰/装饰而导致链接问题。如果是这样,你可能需要添加一些'extern“C”'到适当的头文件。 – 2010-06-28 15:09:31

+0

嗯。这并没有改变,但它似乎忽略了这个选择。如果我从项目中排除头文件,似乎没有什么区别。 – 2010-06-28 15:20:27