我知道VC里面用_t+函数名和T(字符串),来控制实际的编译结果。
如果工程属性是ANSI,那么_tprintf就是printf,T就是char*
如果工程属性是Unicode,那么_tprintf就是wprintf,T就是wchar_t*可是,main函数为什么还要写成_tmain()呢? 难道进程的入口函数本身还要分宽字符版本和窄字符版本呢?
入口函数不就是一个入口么,难道还要分版本? 分了好像也没有什么实际意义啊!

解决方案 »

  1.   

    看看《window 程序设计》里面有一章是讲Ansi 和 unicode的,讲得很详细
      

  2.   


    我在csdn下载频道里面寻找"钱林松"结果什么也没有找到。
    请问哪里有这本书的下载? 谢谢!
      

  3.   

    ANSI和UNICODE是两个标准。
    ANSI是西文英语的,而可以显示世界绝大部分国家地区的语言文字。
    为了跨平台,以及数据交换交互,UNICODE将是未来的主流趋向。不同的ANSI体系下的字符编码,互不兼容。因此这给跨平台的多语言软件版本带来了挑战。
    不同国家的字符串的表示形式和内存占位也是不一样的,因此设定了两种函数。
      

  4.   

    main 函数带字符串参数的。
    int main(int argc,char *argv[])
      {
      .....
      } 
      

  5.   

    main函数的参数不就是字符串么
      

  6.   

    有一点让我搞不清但又很重要,汉字实在应该是宽字符,为什么所有我编程出现汉字的地方,ANSI和char这种类型能正常使用呢?
    我是菜鸟,请别见笑啊
      

  7.   

    编码方式不同而已。ansi又叫multi bytes characters,这个大多数是本地自行定义的,比如gb2312 big5等,同样两个字节,用不同的区码表,就是不同的字符。
    unicode是另外一种编码规则,是标准化的字符集,理论上囊括了世界上所有语言的字符,而且不会产生重复。
      

  8.   


    我也有同样的疑问!"wprintf要进行双字节解释,就不行了": 本来"你好"这两个字就是双字节的,wprintf为什么就不能输出了? 
    而且既然Printf是单字节输出的,那么我期待他把中文拆成一些ascii字符进行输出。它怎么就能输出中文呢?  
      
     还是说,printf只是把这些字节流传给了控制台,控制台程序再去判断? 可如果是这样的话,wprintf也应该能工作啊,即使我不setlocale?