关于“no definition”问题

大川搬砖 2012-03-22 09:06:49
最近在弄STM32,但是遇到了一个问题。
#define STM32
#ifdef STM32
CPU_INT08U* block1 = (CPU_INT08U*)0x20001800;
#else
CPU_INT08U block1[256]; //!< Workspace 1.
#endif

就按上面代码编译、链接,没问题。但是当我把下面的block1[256]注释掉以后,就会出现错误,不知道是什么原因。

#define STM32
#ifdef STM32
CPU_INT08U* block1 = (CPU_INT08U*)0x20001800;
#else
/*CPU_INT08U block1[256]; //!< Workspace 1.*/
#endif
错误提示:“Error[Li005]: no definition for "block1" [referenced from F:\Micrium\Software\EvalBoards\ST\STM32-SK\IAR\OS-Probe-LCD\Flash\Obj\EmAes.o] ”
...全文
317 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2012-03-22
  • 打赏
  • 举报
回复
走的是第一个分支,如果这样:


#if (STM32) 走的是第二个分支

vs2010 都能通过
巫师 2012-03-22
  • 打赏
  • 举报
回复
走的是第二个分支
RabbitLBJ 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 czh3642210 的回复:]

预编译的时候,他不会看你是否define 了STM32,他会两个都去查看,无论是if还是else
[/Quote]

恩,这个是标准吗??
为什么我的vs2008却是先看#define,然后分支编译的??
面包大师 2012-03-22
  • 打赏
  • 举报
回复
预编译的时候,他不会看你是否define 了STM32,他会两个都去查看,无论是if还是else
大川搬砖 2012-03-22
  • 打赏
  • 举报
回复
嘎嘎,知道了。
我在另一个文件里面定义了“#define STM32”,但是没有包含进来。
哎,这种低级错误都范。
谢谢各位的解答
likejieicy 2012-03-22
  • 打赏
  • 举报
回复
GCC 沒任何問題 鑒定完畢
aozhi 2012-03-22
  • 打赏
  • 举报
回复
gcc -DSTM32 ……一下试试呢?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧