跨平台开发?

来源:互联网 发布:bilibili mac 客户端 编辑:程序博客网 时间:2024/05/22 01:54

  再次尝试用.net开发c/c++代码。
  稍有点意外的发现在所有mfc工程中也可以良好的支持标准c/c++。
  那个著名的stdafx.h报错,可以在工程配置中取消。(预编译头选无),为了兼容起见,unicode的配置也要选成“不设置”,于是在mfc环境下的好多方法都自动多了个A,比如SetWindowTextA。
  以.c为后缀的文件,.net严格的执行了c的标准,比如变量声明要放在表达式前面。对于用习惯了c++的我来说,突然发现这种示警真是傻了眼,把代码移过来移过去,最后才接受了这个现实。
  甚至最常用的DWORD,WORD,也不被认帐了。
  文件IO,从网上copy了一段,和实际结果总有出路,也是苦恼了半天,最后发现是因为默认是文本读取,在所有的/n前补了个/r,我说怎么不脆把0转成0x20,彻底的可视化呢。。
   相比mfc,xcode的c/c++编辑支持并不逊色,只是不自动弹出列表让自认忆力一般的我大伤脑筋。

   编辑用的键盘中。能够盲打home,end的都是那种办公室里宽大的键盘,手摸到3*2的键位中,按触觉识别出home,end,delete。
   家里用的无线键盘,笔记本鼠标都达不到这点。要做上述操作还得用眼睛看键盘,考虑到这个,apple废掉delete也不算不可接受的行为。
   本来对apple的ide多有微词,用.net玩了阵c,发现其实也不象原来那样的可恶。只不过毕竟在win下用得多,要想熟练玩apple,估计要有相当的时间。apple好象没有显示桌面的功能。同一个程序的几个进程也放在同一个任务图标里,好象是近期wind借签了这种方法。

 

   从.net完成的代码复制到apple下后,报了几个错,其中之一是声明为void*的函数参数,在实现时直接转用byte*不被认可,比如声明为:void a(void*); 实现为void a(byte*),会示警,c++下不会。然后itoa编译通过,但链接时示错。

   用标准c作好多事比高级语言简单,也有好多事比高级语言悲惨。然后发现现在c也有好多著名的类库。连xml都有,说起来这些类库需要储备啊。。


   事实上,Apple对c++的支持也不差,下次还是尝试用标准c++好了。只不过后缀名不能用.cpp,要用.mm,每次得重命名的样子。

原创粉丝点击