问题描述
最近在用C语言写一个代码库,由于之前主要使用C++语言,很多时候仍然使用C++语言的一些习惯,导致编译会一些错误。比如error C2275: “XXXX”: 将此类型用作表达式非法
,下面将该问题总结分析问题的原因,并给出解决办法。
问题现象
编译器为MSVC10.0,IDE为Qt Creator。
错误的源代码如下:
__declspec(dllexport) void FlpcCalculate()
{
flpc_normal_lateral_track->count++;
FlpcLateralTrack* temporary_lateral_track;
temporary_lateral_track = GetFlpcTemporaryLateralTrack();
temporary_lateral_track->count++;
}
错误现象如下所示:
这个错误是由于:c的编译器要求将变量的声明放在一个函数块的头部,而c++没有这样的要求造成的;解决的办法就是把变量的声明全部放在变量的生存块的开始
。
解决办法
将变量的声明放在一个函数块的头部,如下代码所示
__declspec(dllexport) void FlpcCalculate()
{
FlpcLateralTrack* temporary_lateral_track;
flpc_normal_lateral_track->count++;
temporary_lateral_track = GetFlpcTemporaryLateralTrack();
temporary_lateral_track->count++;
}
上述代码即可正常编译。