gpt4 book ai didi

C(TI ARM 编译器)语句无法访问

转载 作者:行者123 更新时间:2023-11-30 18:38:06 24 4
gpt4 key购买 nike

我在 Code Composer Studio 中遇到 ARM 编译器的奇怪行为:

当 DEFINE1 和 DEFINE2 均未定义时,编译器会报告无法访问的代码:

#if defined(DEFINE1) || defined(DEFINE2)
statement; //reports warning #112-D: statement is unreachable
#endif

当我刚写的时候:

#ifdef DEFINE1
statement;
#endif

#ifdef DEFINE2
statement;
#endif

那么就不会发出这样的警告。

这是编译器错误吗?

编辑:我的代码中有错误。我对 DEFINE1 和 DEFINE2 使用了错误的符号。例如。对于定义1:应该有

#undef DEFINE1

但是有某事。完全不同:

#define DEFINE1 0x01

我只是在代码中混合了两个预处理器符号。

最佳答案

没有错误。编译器告诉您已生成死代码,即永远不会执行(无法访问)的代码,因此不会被创建。
根据您施加的条件,如果两个符号均未定义,则不会创建代码。
编译器通常会默默地删除死代码,除非警告级别非常高(即 --Wpedantic 等)。

关于C(TI ARM 编译器)语句无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34996297/

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