What does an error like "Can’t generate code" mean?

The error means that the compiler tried but was unable to generate output for the indicated C source. It usually does not indicate that the C code is invalid, but review the code to be sure.

This error will most likely occur with complex expressions, particularly on devices with few working registers and simple architectures, e.g. baseline devices. Remember that C code that may not look complicated to you may be very difficult to implement in assembly code.

The solution is to try to simplify the expression, maybe using a temporary variable to hold an intermediate result. The compiler often has to resort to using compiler-defined temporary variables to hold intermediate results so this work around is often no less efficient that what would be otherwise possible.

© 2016 Microchip Technology, Inc.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.