gpt4 book ai didi

c++ - 使用带有 C 编译器的纯 C 和 C++ 编译器的 "C part"有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 18:01:14 26 4
gpt4 key购买 nike

我不确定 C 语言编程的真正含义:- 使用 C 编译器在纯 C 中编程或者- 使用 C++ 编译器在 C 中编程。

除了 C 的 C 语法和 C++ 的 C 语法之间的差异,我可以肯定地说两个可执行文件在性能方面绝对(或在极少数情况下)没有差异吗?

我在想这个问题,因为在游戏编程中,渲染部分、游戏对象部分和游戏脚本部分都可以用完全不同的语言编写,以获得执行速度和开发容易度之间的最佳折衷,并且在每个部分都有这个。

部分之间的这种分离对我来说可能很重要,例如,我想制作一个多功能的 3D 冒险引擎,社区可以在其中制作自己的游戏玩法而不必弄乱引擎。它只能制作具有单个角色和多个敌人的游戏,因此将涵盖不同的游戏类型:砍杀、渗透、RPG、平台等。

我应该把这 2 段放在 gamedev.stackexchange 中,但第一部分只是关于语言......

最佳答案

有很多小问题。最让我印象深刻的是,在 C++ 中,您必须强制转换 malloc 的返回值。此外,结构在 C++ 中自动类型定义。

始终对 C 代码使用 C 编译器,而不是 C++。 C++ 与 C 并不完全兼容。

其他几个:

  • 在 C 中,声明 void func(); 声明了一个未指定其参数的函数,而在 C++ 中,void func(); 是等效的到 C void func(void)',不带任何参数;
  • 在 C++ 中需要原型(prototype),而在 C 中它通常只是一个警告;
  • 字符常量(如'a')的类型在C中是int,在C++中是char
  • 字符串字面量的类型在C中是char[],在C++中是const char[]
  • C 中一些合法的变量名,如 class,在 C++ 中是保留关键字。

对于所有不相信我并投反对票的人,请查看此 C 代码:

#include <stdlib.h>

int main(int argc, char **argv) {
int *i = malloc(sizeof(int));

return 0;
}

gcc下编译没问题,但在g++下编译会出现如下错误:

test.c: In function `int main(int, char**)':
test.c:4: error: invalid conversion from `void*' to `int*'

关于c++ - 使用带有 C 编译器的纯 C 和 C++ 编译器的 "C part"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com