大家谈谈c与c++编码的不同,就是有时编译同一个文件时为什么后缀为.c可以过,而.cpp就不行,说是类型不对大家谈谈,疑惑呀,本是同根生

解决方案 »

  1.   

    同根生并不代表没有差别,差别是很多的。
    .c用的是C编译器,.cpp用的是C++编译器,得到不同的编译结果当然是十分正常
      

  2.   

    把.c 转汉成 .cpp文件需要做一些改动的
    他们是不同的编译器
    nlstone(天外流星) 说的很对
      

  3.   

    把.c 转汉成 .cpp文件需要做一些改动的,一般改动什么,好像很模糊的问题,高人说一下
      

  4.   

    我举个经典的例子
    char s[3] = "abc";c,pass;
    c++,fail,改成char s[4] = "abc";才可以
      

  5.   

    建议楼主去看一下关于windows编程的书籍。
    C和C++用的是不同的编译器,编译后许多地方是不同的。
    比如,由于C++中支持重载,因此可以有相同的函数名,而C中是不允许函数同名的。
    当将某函数f()放在cpp文件中编译后,它的函数名将会变成?f@@YAHH@Z之类的形式,其中YAHH等字符代表重载函数的不同的参数。而当f()以.c文件编译时,编译后的函数名只是在原有的函数名前加一个下划线。即
    _f()的形式。当然C和C++的程序是有互相转换的接口的。
    如果你要在cpp文件中使用C,可以在代码头部加上如下的形式:
    extern "C"
    {
        int f();
    }
    这样当cpp程序编译到f()时,这个函数将以C的约定被编译。以上只是自己的一些理解,可能有写错的地方,请方家指正。
      

  6.   

    大家请跟贴,当把后缀c改成cpp为什么有时候编译时出现
    cannot convert parameter n from 'struct _XXXXXXXXXX ** ' to 'void ** '
    参考了各位大虾的建议但是这个问题怎么解决呢?大家说一下了。
      

  7.   

    StructType *pStructVariable = ...;在某函数中需要void **的参数,又想传个StructType类型的变量,这样:
    (void **)&pStructVariable
      

  8.   

    cannot convert parameter n from 'struct _XXXXXXXXXX ** ' to 'void ** '在c++中需要强制转换在c中,执行语句不能出现在定义之前,比如
    int y;
    y=5;
    int i;//错
    但是
    int y;
    y=5;
    {
      int i;//正确
    }这类区别很多,都是细节上的