台灣最大程式設計社群網站
線上人數
1657
 
會員總數:240858
討論主題:186640
歡迎您免費加入會員
討論區列表 >> C/C++ >> isnan in visaul studo 2010
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
isnan in visaul studo 2010
價值 : 50 QP  點閱數:141 回應數:1

樓主

劉彥鋒
門外漢
0 13
164 9
發送站內信

各位大大:
想請教一下,因為我要編譯網路提供抓kinect2的程式
但在他的程式碼的中,有使用到isnan,但是vs2010並沒有isnan
要2015後才支援,但因為軟體限制僅能用2010
在網路上看到一個解決辦法如下:
you could write your own isnan as such:
#include <iostream>
#include <cmath>
#include <cfloat>
#include <limits>

namespace non_std
{

template < typename T >
bool isnan(T val)
{
#if defined(_WIN64)
// x64 version
return _isnanf(val) != 0;
#else
return _isnan(val) != 0;
#endif
}

}

int main(int argc, char** argv)
{
float value = 1.0f;
std::cout << value << " is " <<
(non_std::isnan(value) ? "NaN" : "NOT NaN") << std::endl;

if (std::numeric_limits<float>::has_quiet_NaN) {
value = std::numeric_limits<float>::quiet_NaN();
std::cout << value << " is " <<
(non_std::isnan(value) ? "NaN" : "NOT NaN") << std::endl;
}

return 0;
}

看起來就只是寫一個isnan 傳回_isnan做的事情
但我卻不知道這.cpp檔要放哪 我的程式才抓地到,我僅複製以下程式碼寫成.cpp
#include <iostream>
#include <cmath>
#include <cfloat>
#include <limits>

namespace non_std
{

template < typename T >
bool isnan(T val)
{
#if defined(_WIN64)
// x64 version
return _isnanf(val) != 0;
#else
return _isnan(val) != 0;
#endif
}

}

那這cpp檔應該丟在哪邊 我編譯的檔案才抓地到? 以下是她錯誤的原因
Error1 error C3861: 'isnan': identifier not found D:\libfreenect2-master\src\registration.cpp 326

再麻煩大家幫幫忙了


搜尋相關Tags的文章: [ isnanc++ ] , [ isnan+vs2010 ] ,
本篇文章發表於2017-07-25 11:55
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
一般的作法,
你寫一個.h為class的結構
寫一個.cpp為class的實作,
然後把.h include進去,
不過你如果用namespace可以試試看
using namespace non_std
我是沒有在c++自己寫過namespace

更簡單的作法,
直接把函式寫在原本的檔案裡面,
連namespace都省了
本篇文章回覆於2017-07-25 12:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.