Tag: 可移植性

如何检测运行MATLAB或Octave?

我需要编写在Octave和MATLAB上运行的代码。 问题是,它需要做一些GUI的东西,MATLAB和八度处理完全不同。 有没有一种方法,我可以检测,如果我正在运行MATLAB或八度,为了调用正确的function?

C ++:在多行string常量中是否有行尾的标准定义?

如果我有一个多行stringC ++ 11string常量如 R"""line 1 line 2 line3""" 是否定义了行结束符/分隔符包含哪些字符?

你如何处理Internet Explorer?

我知道这个话题可能还有其他的问题。 我想每个Web开发人员都可以通过IE浏览器进行浏览。 我的问题: 我正在开发一个完全基于Javascript的基于Web的应用程序。 我是一名Mac用户。 我很高兴在Safari,Firefox和Opera上都能很好地工作。 然后,我问了一个Windows的朋友用IE浏览器检查一下,事情也不行。 我的应用程序对HTML标准非常敏感。 主要的问题是CSS布局。 JavaScript本身似乎正常工作,感谢jQuery的可移植性。 我的问题: 你如何处理Internet Explorer? 我应该创build一个仅在Internet Explorer上加载的新CSS吗? 我应该只为Internet Explorer创build新版本的应用程序吗? 你通常如何处理这个问题? 这个应用程序在functiondevise和布局devise上都是相当大的。 编辑: 按照Nosredna的build议使用CSS重置,已经解决了将近一半的问题。 我想这是一个很好的做法。 我注意到,SO也使用它。

end iterator是否可移植性递减?

刚刚在我公司的源代码中遇到了end()迭代器的递减,这对我来说看起来很奇怪。 据我记忆,这是在一些平台上工作,但不为其他人。 也许我错了,但是我找不到任何有用的标准。 标准只说end()返回一个迭代器,它是过去的最终值,但是它保证是可减less的? 这样的代码如何符合标准? std::list<int>::iterator it = –l.end(); 提前致谢。

是否有一个相当于DebugBreak()/ __ debugbreak的便携式?

在MSVC中, DebugBreak()或__debugbreak导致debugging器中断。 在x86上它相当于写了“_asm int 3”,在x64上它有些不同。 当用gcc(或其他标准编译器)编译时,我也想闯入debugging器。 有独立于平台的function还是内在的? 我看到了关于这个问题的XCode问题 ,但它似乎不够便捷。 旁注:我主要想要实现ASSERT,我知道我可以使用assert(),但我也想写DEBUG_BREAK或东西到代码中。

如何devise一个C / C ++库在许多客户端语言中可用?

我正在计划编写一个图书馆,这个图书馆应该可以在众多平台上被大量的人使用。 我有什么需要考虑devise它的权利? 为了使这个问题更具体,最后有四个“子问题”。 语言的select 考虑到所有已知的要求和细节,我总结出用C或C ++编写的库是最好的select。 我认为我的库的主要用法是用C,C ++和Java SE编写的程序,但我也可以考虑从Java ME,PHP,.NET,Objective C,Python,Ruby,bash脚本,等等…也许我不能瞄准所有的人,但是如果可能的话,我会去做的。 要求 在这里描述我的图书馆的全部目的是很有意义的,但是对于这个问题可能有一些重要的方面: 图书馆本身从小开始,但肯定会变得非常复杂,所以不能同时维护多个版本。 虽然大部分的复杂性都隐藏在图书馆里面 该库将构build一个内部使用的对象图。 图书馆的一些客户只会对特定对象的特定属性感兴趣,而其他客户则必须以某种方式遍历对象图 客户可能会更改对象,并且必须通知图书馆 该库可能会更改对象,并且必须通知客户端,如果它已经有该对象的句柄 该库必须是multithreading的,因为它将维护与其他几个主机的networking连接 尽pipe对图书馆的一些要求可能会同步处理,但是其中很多要求过长,必须在后台处理,并通知客户成功(或失败) 当然,不pipe答案是否符合我的具体要求,或者如果他们以一般的方式回答这个问题,对更广泛的观众来说,答案是可以接受的! 我的假设,迄今 以下是我在过去几个月收集的一些假设和结论: 在内部,我可以使用任何我想要的,例如C + +操作符重载,多重inheritance,模板元编程…只要有一个可移植的编译器来处理它(想想gcc / g ++) 但是我的界面必须是一个干净的C界面,不涉及名称修改 此外,我认为我的接口应该只包含函数,基本/原始数据types(也许指针)作为parameter passing和返回值 如果我使用指针,我想我应该只用它们将它们传回给库,而不是直接在引用的内存上操作 对于在C ++应用程序中的使用,我可能还会提供一个面向对象的接口(它也容易出现名称混乱,所以应用程序必须使用相同的编译器,或者以源代码forms包含库) 这在C#中的用法也是这样吗? 对于Java SE / Java EE中的使用,Java本地接口(JNI)适用。 我有一些关于它的基本知识,但我一定要仔细检查一下。 并不是所有的客户端语言都能很好地处理multithreading,所以应该有一个单线程与客户端交谈 对于在Java ME上的使用,没有像JNI那样的东西,但是我可能会使用嵌套的VM 对于在Bash脚本中的使用,必须有一个带有命令行界面的可执行文件 对于其他客户端语言,我不知道 对于大多数客户端语言来说,使用该语言编写适配器接口将会很不错。 我认为有一些工具可以为Java和其他一些自动生成 对于面向对象的语言,可以创build一个面向对象的适配器来隐藏这个库的接口是基于函数的,但是我不知道它是否值得 可能的子问题 这是可能的,可pipe理的努力,还是只是太多的可移植性? 有没有关于这种devise标准的好书/网站? 我的假设是否有错? […]

使用Python的ftplib获取一个目录列表,可移植的

您可以使用ftplib在Python中提供完整的FTP支持。 但是获取目录列表的首选方式是: # File: ftplib-example-1.py import ftplib ftp = ftplib.FTP("www.python.org") ftp.login("anonymous", "ftplib-example-1") data = [] ftp.dir(data.append) ftp.quit() for line in data: print "-", line 这产生: $ python ftplib-example-1.py – total 34 – drwxrwxr-x 11 root 4127 512 Sep 14 14:18 . – drwxrwxr-x 11 root 4127 512 Sep 14 14:18 .. – drwxrwxr-x 2 root […]

#warning预处理器指令的可移植性

我知道#warning指令不是标准的C / C ++,但是有几个编译器支持它,包括gcc / g ++。 但对于那些不支持它的人,他们会默默地忽略它,否则会导致编译失败? 换句话说,我可以安全地在我的项目中使用它,而不会破坏不支持它的编译器的构build?

C ++中是否有64位整数的“标准”htonl函数?

我正在研究memcache协议的实现,在某些情况下,它使用64位整数值。 这些值必须以“networking字节顺序”存储。 我希望有一些uint64_t htonll(uint64_t value)函数来进行更改,但不幸的是,如果存在,我找不到它。 所以我有1或2个问题: 有没有任何便携式 (Windows,Linux,AIX)标准function来做到这一点? 如果没有这样的function,你会怎么实现呢? 我想到了一个基本的实现,但我不知道如何在编译时检查字节序以使代码可移植。 所以你的帮助是在这里比欢迎;) 谢谢。 这是我写的最后的解决scheme,感谢Brian的解决scheme。 uint64_t htonll(uint64_t value) { // The answer is 42 static const int num = 42; // Check the endianness if (*reinterpret_cast<const char*>(&num) == num) { const uint32_t high_part = htonl(static_cast<uint32_t>(value >> 32)); const uint32_t low_part = htonl(static_cast<uint32_t>(value & 0xFFFFFFFFLL)); return (static_cast<uint64_t>(low_part) << […]

有没有将现有的.NET类库转换为便携式库的指导?

我有一些不重要的现有代码的类库。 类库目前的目标是.NET 4.0。 有没有关于如何将这些库转换为便携式库的指导? 从看.csproj,看起来并没有太多的区别: <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" /> 和 <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 尝试将现有的类库转换为便携式库是好的还是坏主意?