所以我们都听说过不使用register行,其理由是尝试优化编译器是一个愚蠢的错误.
register据我所知,实际上并没有说明有关CPU寄存器的任何信息,只是不能间接引用给定的变量.我猜测它通常被称为过时,因为编译器可以自动检测到缺少寻址,从而使这种优化变得透明.
但是如果我们对这个论点很坚定,那么它不能用C中的每个优化驱动关键字来衡量吗?为什么我们使用inline和C99一样restrict?
我认为像锯齿这样的东西很难甚至不可能推断出一些优化,那么在我们开始进入Sufficiently Smart Compiler领域之前,我们会在哪里划线?
在填充编译器优化信息并假设它知道它在做什么之间,应该在C和C++中绘制线应该放在哪里?
编辑:Jens Gustedt指出,我对C和C++的混淆是不正确的,因为其中两个关键字具有语义差异,而标准C++中不存在一个.我register在C++中有一个很好的链接,如果我找到它我会添加...
我正在寻找一个适用于PIC 16系列的优秀C编译器,适用于Windows.
一些同事使用bknudc,但有些人似乎不喜欢它.显然你不能有效地使用链接器,事实证明最好是在包含文件中设置所有代码.
SDCC看起来不错,但看起来它仍处于测试阶段,并且不易设置或不得不处理.
还有其他一些选择,根据他们自己的最佳选择.我找到了一些讨论这个主题的论坛,似乎没有人互相认同.MikroC,CCS(昂贵),HiTech,BoostC.
我希望得到一些关于什么是好的和什么是坏的真实信息.
如果我做对了,PIC16架构真的不是C友好的吗?是否有编译器让程序员在ANSI C中工作?还有一种设置足够好的调试器的方法吗?