This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR59941:使用32位变量的编译器选项

Guru**** 2966500 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/938832/ccs-msp430fr59941-compiler-option-to-use-32-bit-variables

器件型号:MSP430FR59941

工具/软件:Code Composer Studio

大家好、

客户从 CCS 10.0.0.10中的 uint32_t 变量和指针获得16位分辨率、编译器是采用 C11模式的 TI v20.2.1.LTS。 他想知道 是否有编译器选项可以使用整个32位?

以下是处理选项:silicon=mspx、code memory model=large、data model=large 和 data near =none。

是否可以在16位处理器中处理32位整数?

此致、

Danilo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 UINT32_t-s 中使用32位、但不执行任何特殊操作。 如何确定"分辨率"?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于发生这种情况的一个源文件...

    [引用 USER="Danilo Austria"]客户从 uint32_t 变量和指针获得16位分辨率

    (笑声) 请按照文章 How to Submit a Compiler Test Case 中的说明进行操作。  此外、请指出出现此问题的确切陈述。  请尽可能详细地显示输入值、预期结果和实际看到的结果。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    事实证明、问题与 printf 如何显示变量有关。  在 Linux 系统上使用以前的 GNU 工具时、%u 或%d 不需要%lu 或%ld 即可将 uint32_t 呈现为32位。  使用 Code Composer 移植时、仅带有%d 或%u 的 printf 会将该值截断为16位值。 将%u 更改为%lu 已解决问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Craig Keller"]当使用 Code Composer 移植时,只有%d 或%u 的 printf 会将该值截断为16位值。 将%u 更改为%lu 解决了问题。 inttypes.h 具有格式指定符 、用于在基元数字类型大小可能不同的不同平台上对值进行可移植格式化。 例如 、PRIu32宏用于将 uint32_t 变量打印为十进制。

    TI MSP430编译器具有 inttypes.h

    什么是 C 语言 printf 中的未引用`PRIu32`? 有一些背景信息。