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.

[参考译文] 错误#20:未定义标识符

Guru**** 2589280 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/994819/error-20-identifier-is-undefined

主题中讨论的其他器件:C2000WARE

您好!

我已经创建了一个项目、我在其中完成了 GV.h 中的所有声明 以及变量在其各自的.c 文件中的定义。 对于 float、int、etc 变量、没有问题。 但对于一个数组、它给出了"error #20:identifier is undefined"。

数组"extern uint16_t BBBB_Port2_RX[10]"在 gV.h 中声明 它已在 vbus1.c 中初始化 vbus1.c 中的所有功能都很好。 但是、当我在 任何其他.c 文件中使用任何 BB_Port2_RX[x]时、我会收到错误。

同样、我 在 Gh.h 中有一个 struct" struct port"声明 但我在多个.c 文件中遇到变量重新定义错误。 但是、当我 在 main.c 文件中写入它们的定义时、错误消失了。 我想了解问题是什么? 我看到很多人都遇到了这个问题。

注意事项

Vishal

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

    IIRC、则会将 extern 声明的大小保留为 off。 您必须单独跟踪尺寸。

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

    请告诉我 此常见问题 解答(不是来自 TI)是否解决了该问题。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    我没有触摸我的代码。 一段时间后、错误自动消失。 我将查看常见问题解答以更好地了解。

    我有另一个查询。 如果我想在项目中使用 C++源文件、我需要对当前项目进行哪些更改? 我使用的是驱动程序库中的一个示例项目。  

    添加 C++源文件后、我将收到以下警告。

    说明资源路径位置类型
    从字符串字面量到"char *"的#2825-D 转换被弃用。ccsproject /_CPU01_ELOAD2.0_EPR2_struct 行1061、外部位置:C:\ti\C2000Ware_3_03_00_00_Software\driverlib\f2837xd\driverlib\sdfm.h C/C++ problem。

    我想这么做是因为我希望函数位于一个结构中。 链接中提到的内容

    www.geeksforgeeks.org/.../

    此致

    Vishal

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

    我不知道是什么导致了诊断...

    [引用 userid="412098" URL"~/support/tools/ccs/f/code-composer-studio-forum/994819/error-20-identifier-is-undefined/3675142 #3675142"]已弃用从字符串文字转换为"char *"的方法

    但我可以向您展示一个相关示例。   

    考虑这个 C (不是 C++)代码...

    char *p = "literal string constant";

    如果将其构建为 C 代码、则不会进行诊断。

    % cl2000 file.c

    如果您将其构建为 C++代码则进行构建...

    % cl2000 --cpp_default file.c
    "file.c", line 1: warning: conversion from a string literal to "char *" is deprecated

    有几种方法可以解决该问题。  一种方法是使用 const char *而不是...

    const char *p = "literal string constant";

    另一种方法是将字符串显式转换为 char *。。

    char *p = (char *) "literal string constant";

    谢谢、此致、

    乔治