gpt4 book ai didi

c++ - K&R 样式函数定义使用 g++ 编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:07:32 25 4
gpt4 key购买 nike

当编译一个使用老式函数定义的c文件时

int foo(a)
int a;
{
...
}

g++ 会报错:‘a’未在此范围内声明。gcc 可以解析这个。有没有办法让 g++ 识别这个?

这对我来说是个问题,因为我正在编译混合的 c 和 c++ 文件。一个相关的问题是什么是标准做法建立这种类型的混合源?对所有文件或仅对 cc 文件运行 g++?前者很方便,但由于 c 和 c++ 规范之间的不一致(例如,char[4]="four";)而一直给我带来一些麻烦

最佳答案

Is there a way to let g++ recognize this?

此语法在 C++ 中不受支持。

Running g++ on all files or only the cc files?

参见例如Compiling C++ programs来自 GCC 文档:

C++ source files conventionally use one of the suffixes .C', .cc, .cpp, .CPP, .c++, .cp, or .cxx; C++ header files often use .hh, .hpp, .H, or (for shared template code) .tcc; and preprocessed C++ files use the suffix .ii. GCC recognizes files with these names and compiles them as C++ programs even if you call the compiler the same way as for compiling C programs (usually with the name gcc).

However, the use of gcc does not add the C++ library. g++ is a program that calls GCC and treats .c, .h and .i files as C++ source files instead of C source files unless -x is used, and automatically specifies linking against the C++ library. This program is also useful when precompiling a C header file with a .h extension for use in C++ compilations.

所以有两种可能:

  1. 在 C 文件上运行 gcc,在 C++ 文件上运行 g++
  2. 对所有文件运行 gcc

在这两种情况下,您都需要使用 g++(或 gcc -lstdc++)进行链接。

关于c++ - K&R 样式函数定义使用 g++ 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173889/

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