C语言的小题目(把项目的编译日期存储在CONST里),请教解答:

[复制链接]
7887|31
原野之狼 发表于 2011-6-14 11:01 | 显示全部楼层
LS的我试了可行,可惜已经结贴了:)
""的用法不知出于何处,居然如此奇妙(可以连接2个字符串),呵呵。
mcuisp 发表于 2011-6-14 10:35

连接字符串的并不是“”符号 此处是为了通过一个空的字串来分隔开两个字符串宏
要不然__DATE____TIME__就不知道是啥东西了
实际上连接字串不需要任何东西  紧挨着就行了 比如
“string1”"string2"“string3”
 楼主| mcuisp 发表于 2011-6-14 11:05 | 显示全部楼层
本帖最后由 mcuisp 于 2011-6-14 11:07 编辑

从14楼来理解13楼的""用法:
这个""是在__DATE__和__TIME__之间插入一个空字符串。以避免__DATE____TIME__无法被识别。
我在IAR里试了下,__DATE__ __TIME__       (插入一个空格也是可行的)。

8楼也很精妙,呵呵。

这块砖抛得值呀、、、
原野之狼 发表于 2011-6-14 11:12 | 显示全部楼层
连接字符串的并不是“”符号 此处是为了通过一个空的字串来分隔开两个字符串宏
要不然__DATE____TIME__就不知道是啥东西了
实际上连接字串不需要任何东西  紧挨着就行了 比如
“string1”"string2"“string3” ...
原野之狼 发表于 2011-6-14 11:01

修改下 不用紧挨着  有空格或者TAB都行  当然常用的做法还会使用换行连接符号\
以使排版清晰
例如
const char ver_info[] = {\
       "cnlaunch"  \
       "shenzhen.zhongguo"  \
       "2011.06.14"   \
}
leang521 发表于 2011-6-14 12:29 | 显示全部楼层
本帖最后由 leang521 于 2011-6-14 12:32 编辑
13楼的我试了可行,可惜已经结贴了:)
""的用法不知出于何处,居然如此奇妙(可以连接2个预定义的字符串),呵呵。
14楼的也可行。

万能的21ic,呵呵
mcuisp 发表于 2011-6-14 10:35

" "就是一个空格而已。。。。。。
14楼和我的是一样的,""在C里代表字符串。
这里面引用了宏定义,所以要站在编译器的角度去考虑问题,不能直接使用,因为编译器可能会将之理解为字符串而不是宏
leang521 发表于 2011-6-14 12:33 | 显示全部楼层
修改下 不用紧挨着  有空格或者TAB都行  当然常用的做法还会使用换行连接符号\
以使排版清晰
例如
const char ver_info[] = {\
       "cnlaunch"  \
       "shenzhen.zhongguo"  \
       "2011.06.14"   \
} ...
原野之狼 发表于 2011-6-14 11:12

各有所取吧,有些人认为这样清晰些,有些人认为那样清晰些,关键在于编译器怎么理解,是不?
dodome521 发表于 2011-6-14 14:15 | 显示全部楼层
不错,长见识了。
linqing171 发表于 2011-6-14 14:47 | 显示全部楼层
哈哈,俺的所有代码里都有用这两个宏,包括上位机的,为了好追溯。
所有编译器下都好用。

另外,对于keil C51 的code(也就是const)的绝对地址定位并赋值初始值,有办法的。
在startup.s 中,加入org xxx 然后db, 后只是多加了个2。

另外,对于C++标准的字符串自动连接功能
linqing171 发表于 2011-6-14 14:49 | 显示全部楼层
刚说错了,不是startup.s是startup.a51, keil for arm可以初始化带地址的常量,可是for 51的一直不支持,而且将来也不会支持。对于inline等优化也永远不会改进了。
fskjhm 发表于 2011-6-14 15:34 | 显示全部楼层
记下,以后看
Ryanhsiung 发表于 2011-6-18 11:00 | 显示全部楼层
学习了
leang521 发表于 2011-6-20 09:11 | 显示全部楼层
刚说错了,不是startup.s是startup.a51, keil for arm可以初始化带地址的常量,可是for 51的一直不支持,而且将来也不会支持。对于inline等优化也永远不会改进了。 ...
linqing171 发表于 2011-6-14 14:49

不知你说的地址是那个地址,C51不支持文件夹地址,不过支持显示文件名,日期时间等。
lau1860 发表于 2015-6-2 15:08 | 显示全部楼层
hgjinwei 发表于 2011-6-13 20:01
曾今在IAR中这样用过:

    STR_TO_BCD在哪里定义的?
和 STRM_TO_BCD有什么区别?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部