我有一些数字代码,我需要转换为C或C++.我尝试使用f2c,但它不适用于Fortran代码.f2c抱怨因为代码使用C样式预处理器指令(#include).代码的自述文件声明它是Fortran77,与fort77链接器一起使用,可以扩展那些包含.
有谁知道如何成功转换此代码?
我最后的办法是编写一个简单的预处理器来扩展这些包含,然后将代码提供给f2c.
注意:我在这里工作在Windows/Visual C++环境中,所以任何gcc恶作剧都可能比它们的价值更麻烦......
我需要投一个Action<string>
来Action<object>
.虽然这通常是类型不安全的,但在我的情况下,它总是会被一个字符串调用.我收到这个错误:
Unable to cast object of type 'System.Action
1[System.String]' to type 'System.Action
1[System.Object]'.
有线索吗?反思是公平的游戏.将一个代表包装到另一个代表中则不然.
更新:我创建了一个新的问题,为属性setter或getter创建一个高性能的开放委托,更好地解释我的问题,并使用我想改进的包装解决方案
我提出了: ([^"]*["][^"]*["][^"]*)*
它适用于所有情况,除了空字符串.我认为它会起作用,因为最后一个星形匹配前一个标记零次或多次.
有任何想法吗?
如果还有更好的方法,请告诉我并详细解释.
解决方案必须是正则表达式,因为它将被使用的地方是需要正则表达式的钩子.
它必须匹配没有引号的字符串,因为零是偶数
我确定有一个聪明的单行使用C++ stl通用算法来实现任何有序容器中元素的点积,例如向量或列表.我好像不记得了!
花哨的实施将是:
template <class containerT>
typename containerT::value_type dot_product (const containerT& left, const containerT& right)
{
assert(left.size()==right.size());
containerT::value_type result = 0;
for (containerT::const_iterator l_it = left.begin(), r_it = right.begin();
l_it != left.end(); ++r_it,++l_it)
{
result += (*l_it) * (*r_it);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我认为我正在重新发明轮子,并且有更聪明的方法来做到这一点.