我有一个非常奇怪的问题,我不明白。
这是C代码:
//below are the values being passed //long numTreePeriods = 80 //double length = 0.23013698630136986 TTimeLineInfo* tlInfo = GtoTimeLineInfoNew( (long)ceil(numTreePeriods/length), /*ppy*/ 0L, 1, FALSE);
下面是上面调用的GtoTimeLineInfoNew函数的签名:
__declspec(dllexport) TTimeLineInfo* GtoTimeLineInfoNew (long minPPY, /* (I) Min # ppy before switchDate */ TDate switchDate, /* (I) If 0, ignore ppy2; only use minPPY*/ long minPPY2, /* (I) Min # ppy after switchDate */ TBoolean wholeDayTPs);
当我debugging我的代码,并进入具有上面指定的值的函数时,我得到:
minPPY = -1636178017
????? 什么会导致这种types的行为?
只是为了精确的C代码是一个DLL我要包装在C ++ / CLI。 尽pipe如此,这个问题似乎是独立的….
我不确定; 但我的猜测是如何将参数传递给C函数与C ++函数之间的区别。 尝试:
extern "C" __declspec(dllexport) TTimeLineInfo* GtoTimeLineInfoNew ...
出于某种原因, ceil(numTreePeriods/length)
给了一些非常奇怪的东西。 所以我自己写了一个ceil函数来解决这个问题
更新:
像在glglgl的注释中突出显示的那样,相应的头文件丢失了,因此ceil被解释为返回一个导致有趣值的int。