This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430F6748:CCS makefile 与对 c 和 c++的支持

Guru**** 667810 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/668222/compiler-msp430f6748-ccs-makefile-vs-support-for-c-and-c

器件型号:MSP430F6748

工具/软件:TI C/C++编译器

你好!

我使用 的是 cl6x 编译器和 CCSv7

我在 C 语言中有一个包含许多链接的 C 库的大型项目、我需要将已经用 C++编写的一个更小的大项目(代码行数仍然很少)包含在其中。

这两个文件都是在 makefile 上生成的

将大的一个转换为 C++将会非常有效、当我尝试将 c++链接为 c 时、我会遇到如下错误:

"C:/ti/ccsv6/tools/compiler/c6000_7.4.19/include/exception、第10行:错误#20:
标识符"class"是未定义
的类异常;
^

"C:/ti/ccsv6/tools/compiler/c6000_7.4.19/include/iosfwd、第532行:错误#41:
预期的标识
符 typedef <wchar_t, char_traits > wotstream; 

编译器中显示的所有错误(在.log 文件中)以及项目代码中没有显示的错误。

较小的工程 正在 C++中正确编译、并且具有"#ifdef __cplusplus ..." 导致错误的地方。(构建大型错误时出错)

我的问题是:是否有支持的 makefile 命令允许我正确链接/包含两个工程? 而无需进行重大更改?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    头文件异常和 iosfwd 包含 C++代码。  如果您通过某种方式将它们#include 在文件扩展名为.c 的源文件中、那么您将看到类似这样的诊断。  当编译器看到文件扩展名.c 时、它假定所看到的所有源代码、无论是否来自#include 文件、都仅为 C 代码、而不是 C++代码。  有关更多详细信息、请参阅 C6000编译器手册中标题为指定文件名的部分。

    如果这不能解释您的问题、请针对导致上述错误的构建命令、显示整个命令调用以及针对它的所有诊断。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    C++旨在允许您在一个项目中混合使用 C 和 C++文件。 一项要求是函数"main"必须位于 C++文件中。 您应该将 C++和 C 代码混合为编写 C++程序、并在一些不想更改的 C 代码中混合。 您不需要对项目的 C 部分进行任何更改;尤其是、您不需要将其更改为有效的 C++代码。 相反、在 C++代码中、将要调用的 C 函数声明为 extern "C"。 有许多网页明确讨论了如何混合使用 C 和 C++代码的详细信息;下面是一个网页 :isocpp.org/.../mixing-c-and-cpp
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    main 不得在 c++中;)
    就像 :e2e.ti.com/.../531064
    Aartis 上传了.zip 和 main.c、其中使用了 C++文件

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    虽然许多 C++程序确实可以将 main 定义为 C 函数、但实际上、当您拥有需要构造的全局对象时、这可能会导致难以解释的错误。 因此、最好将 main 变为 C++函数。