你好,我正在编译一个C++工程,编译器报下面的错误,如下图:
从提示来看把trunc当作了数学函数trunc了,是不是这样,请问这个如何解决?谢谢

Nancy Wang:
本来您定义的trunc是什么? 如果只是个普通变量建议就换个变量名。
user5173649:
回复 Nancy Wang:
没有定义trunc,trunc这个符号是ti\ccsv6\tools\compiler\ti-cgt-c6000_8.3.3\include\libcxx\ios文件里面定义的常数
typedef unsigned int openmode;static _DATA_ACCESS const openmode app= 0x01;static _DATA_ACCESS const openmode ate= 0x02;static _DATA_ACCESS const openmode binary = 0x04;static _DATA_ACCESS const openmode in= 0x08;static _DATA_ACCESS const openmode out= 0x10;static _DATA_ACCESS const openmode trunc= 0x20;您可以打开这个文件看一下。
不知道编译器为什么会对自己的库的符号引用报错误。
Nancy Wang:
看一下ccs->properties->c6000 linker里面有没有添加tools\compiler\ti-cgt-c6000_8.1.3\lib库文件。
user5173649:
回复 Nancy Wang:
lib文件加了,CCS自动添加了。 另外请教一下,因为C++程序里使用了exceptions,编译器提供的预编译的库没有带_eh后缀的,所以我用mklib又生成了一个版本,同时注意到还有带_mt_的库文件名,这个是mt是什么含义?
Nancy Wang:
回复 user5173649:
_mt_是multi threading的意思,跟你编译是是否用了 –openmp选项有关。
user5173649:
回复 Nancy Wang:
谢谢
user5173649:
回复 user5173649:
你好,我按住键盘的Ctrl键,用鼠标单击trunc,的确跳转到了 math.h文件里的 trunc的定义处,会不会链接器也由于某种原因也解析错了?
Nancy Wang:
回复 user5173649:
在要调用的函数之前加上extern "C",看一下这个链接。
processors.wiki.ti.com/…/C_Support_in_TI_Compilers
user5173649:
回复 Nancy Wang:
你好 之前我以为解决了,其实被别的问题掩盖了。这个问题我在描述一下: trunc 是ti\ccsv6\tools\compiler\ti-cgt-c6000_8.3.3\include\libcxx\ios文件里面定义的静态变量, 在fstream(也是库文件)里面被引用,但是编译器不能解析这个符号,即使前面有域控制符::,这个是编译器设置的问题呢还是在写写包含文件时要有特殊的顺序?(#include ……) 谢谢!
TI中文支持网
