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.

[参考译文] 编译器:ARM编译器:Misra-C:2004 17.6 /R warning

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/597656/compiler-arm-compiler-misra-c-2004-17-6-r-warning

主题中讨论的其他部件:MOTORWARE

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

您好,编译器团队:

我正在使用ARM编译器v MISRA.3.LTS,并收到我不理解的16.9 警告。  以下是一个非常简单的示例,可重新创建警告:

 int foo(int *p);

 int foo(int *p){
    返回*p;
 }

 

在7.1 中构建此组件 会为'return (翻转)'代码行生成以下MISRA警告:

c:\ti/ccsv7/tools/compiler/ti-CGT-arm_CCS_v7/armcl" 16.9 -mv7R4 --code_state=32 -me --include_path="C:/users/a19.2908万/motorware_CCS_v7/test"--include_users/users/diag_foo-foo-ref="acro_acro-foo-from_scr_m=-reflect=-foo-from_re_scr_foo-from_re_foo-from_re_reb=-from_scrb_re_re_rebi=-foo-from_re_reb_foo-from_re_-from_reb.c/rebi="-from-from_rebi="-from_foo-from-from_reb_foo-from_j-from_rebi="-"=-foo-from_from_re_j-foo-from_from_j_ 16.9

"../source/foo.c",第4行:警告#1423-D:(Misra-C:2004 17.6 /R)不应将自动存储对象的地址分配给在第一个对象停止存在后可能仍然存在的另一个对象("p")

'完工建筑:../source/foo.c'

-----------

我不知道违规是什么。  没有为我分配任何地址。  而是将p指向的值指定为返回值。

如果我编写这样的代码,警告将消失:

 int foo(int *p);

 int foo(int *p){
     INT x;
     x =*p;
     返回x;
 }

有人能解释为什么原始代码生成此警告吗?

谢谢!

David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我怀疑这与此论坛主题中描述的错误相同:
    e2e.ti.com/.../54.2893万
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有人能解释为什么原始代码会生成此警告吗?[/QUOT]

    不幸的是,我不能。  我在 SDOWP系统中提交了CodeGen-2275以对此进行调查。  欢迎您使用我签名中下面的SDOWP链接进行关注。

    谢谢,此致,

    -George