2018-11-21


分别使用C和C++编译下面的代码,看看有什么区别,为什么?

#include "stdafx.h"

struct bird
{
    int nBird;
};

struct rock
{
    int rock;
};

void main() 
{
    bird* b;
    rock* r;
    void* v;
    v = r;
    b = v;
}

C++下

2018-11-21_第1张图片
image.png
  • 在C++下编译无法通过
    原因
  1. struct rock 构造函数中有个类型名称重复了
  2. void类型不匹配bird 和rock*

C下

2018-11-21_第2张图片
image.png
  • C下依然无法编译通过
    原因
  1. C声明结构体指针方式需要加上 struct 这里没有加提示未声明
#include "stdafx.h"
#include 

struct bird
{
    int nBird;
};

struct rock
{
    int rock;
};

void main() 
{
    struct bird* b = NULL;
    struct rock* r = NULL;
    void* v = NULL;
    v = r;
    b = v;
}

改成这样以后编译就能过了


2018-11-21_第3张图片
image.png

你可能感兴趣的:(2018-11-21)