mti*_*nic 5 c ld visual-c++-2008 visual-c++
背景:我在 msvc9 上处理一些遗留系统,浮点到 int 转换存在问题。__ftol2_sse如果不为 SSE 编译,它会发出一条指令,该指令是未定义的引用。
抑制这种情况的唯一方法是使用/QIfist执行内联转换的选项,而不调用任何ftol(). 但是,这些内联转换具有不同的舍入算法,因此在与现有代码一起使用时会导致问题。那,他们向 cl.exe stderr 发出不可抑制的“已弃用”警告。
我的解决方法是:
// Declare a regular _ftol() function that is present.
long __cdecl _ftol(double);
// Define _ftol2_sse() to be the regular one.
long __cdecl _ftol2_sse(double f) { return _ftol(f); }
Run Code Online (Sandbox Code Playgroud)
这很好用。但是,某些构建确实已_ftol2_sse定义,在这种情况下,我会得到多个定义,并且很难在代码中弄清楚这一点。
我希望做类似--wrap __ftol2_ssefrom 的事情ld,并覆盖所有构建的行为。在 MSVC 上有这样的可能吗?
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |