A. Linux centos7使用make编译时报错,提示C文件初始值设定元素不是常量,请问应该怎么解决
static const 初始化值必须为常量,就是只能是编译时就能确定的值,而不是运行时运算出来的值.
得看看makefloatx80是什么,如果是一个普通函数,那么出现这个错误是应该的.
考虑到是官方库,可能是使用的编译器版本不同.
B. visual studio 如何在编译期确定字串长度,特殊宏之类的
宏的作用,只是在编译期间完成替代,并不能实现计算。因此不要考虑宏实现,这个没什么可行性。
编译期间数羡胡槐值确定,其实可以通过const关键字实现,但说实话,这个是“消耗空间换时间”,如果有log的函数太多,太分散,并不值得。
如果log比较集中的在几个函数中,那么可以这么做:
constintfnamelen=strlen(__FUNCTION_);这样,因为编译之后__FUNCTION_是一个常量,const 变量会直接从编译器的符号表中取值(做烂这个叫C++的常量折叠),不会兄友反复计算。
log(__FUNCTION_,fanmelen);