我目前正在管理从单个源代码树(Win32,Linux,Verifone CC终端,MBED甚至Nintendo GBA/DS)在多个平台上运行的一些C++代码.但是,我需要构建一个针对没有C++编译器(仅限C)的嵌入式平台的应用程序.我重申许多早期的C++编译器只是在现有C编译器(例如Glockenspiel使用MSC)上的前端.是否有任何今天使用的"前端"C++编译器将生成C代码.
Tools Platform
----------- ------------
______Visual C++ _____ WIN32
/
/_______MBED (ARM)_______MBED (ARM dev board).
/
/_________GCC (x86)________Linux
/
Source____/___________GCC (ARM)________GBA/DS
\
\__________SDA______________Verifone Verix CC Terminals
\
\________ARM SDT__________Verifine VerixV CC terminals
\
\______????_____________Renases M8/16/32.
\
\____????_____________Z8 family.
Run Code Online (Sandbox Code Playgroud)
最后两个平台我有很好的C编译器,但没有C++.
正如您所看到的,我支持各种各样的平台,并且我共享大量的库代码(以及一些应用程序代码).
好的,这是一个有点厚颜无耻的问题.我想构建一个简单的文本编辑器(使用我自己的文本模式屏幕处理).我只想要一个可用于表示文本缓冲区的数据结构的好例子,以及一些简单的char/text插入/删除示例.我自己可以处理所有其余代码(文件i/o,控制台i/o等).一个很好的简单编辑器源的链接将很棒(C或C++).
这是场景.我正在调试我自己的应用程序(C/C++),该应用程序正在使用公司另一个团队开发的一些库.当我的代码生成一些边缘情况时,断言失败.这是一个痛苦,因为断言没有正确配置,所以库函数工作正常,但我得到所有这些中断,我只需要继续(很多作为它在循环中)所以我可以得到我真正感兴趣的东西由于其他原因,我必须在调试时使用库的调试版本.另一个团队不会解决这个问题直到下一个版本(嘿,它适用于我们的机器).
我可以告诉调试器忽略这段代码断言的断点(即它可以为我自动继续).
我有一个包含大约100个源文件的库.如果已经编译了任何其他文件,我希望其中一个源始终重建,但我不希望每次运行make/build时都构建它.
基本上我希望这个文件内置最后的构建日期/时间,因此链接到库的任何应用程序都可以检查上一个构建时间/日期.有没有其他方法可以做到这一点?
我正在使用系统定时器(clock()函数,请参阅time.h)来计算一些串行和USB通信.我需要的只有大约1毫米的准备.我注意到的第一件事是个别时间可以超出(加或减)10毫秒.随着事件的发生,对一些较小的事件进行定时导致时间不准确.总体时间略好一些.在MSDN上有点根后,我偶然发现了Windows多媒体库中的计时器(timeGetTime(),参见MMSystem.h).这对于1ms级别来说具有良好的准确性要好得多.
然后发生了奇怪的事情,经过几天完美无瑕的工作(可爱的日志和有用的时间)这一切都变成了梨形,因为这个API也开始显示这种奇怪的粒度(而不是一堆小通信消息需要3ms,2ms,3ms,2ms,3ms等它出现了0ms,0ms,0ms,0ms,15ms等.重新启动PC恢复了正常的准确性,但在一些不确定的时间(一小时左右之后),anomoly返回.
任何人都对如何在Windows XP(32位Pro,使用Visual Studio 2008)上获得这种级别的计时准确性有任何想法或建议.
我的小时间班:
class TMMTimer
{
public:
TMMTimer( unsigned long msec);
TMMTimer();
void Clear() { is_set = false; }
void Set( unsigned long msec=0);
bool Expired();
unsigned long Elapsed();
private:
unsigned long when;
int roll_over;
bool is_set;
};
/** Main constructor.
*/
TMMTimer::TMMTimer()
{
is_set = false;
}
/** Main constructor.
*/
TMMTimer::TMMTimer( unsigned long msec)
{
Set( msec);
}
/** Set the timer.
*
* @note This sets the timer to some point in the …Run Code Online (Sandbox Code Playgroud)