【发布时间】:2021-12-17 00:12:22
【问题描述】:
我想查看预处理器计算的输出。只有字符串才有效:
#define XSTR(x) STR(x)
#define STR(x) #x
#define BEGIN "test"
#pragma message ".text= " XSTR(BEGIN)
当我将 BEGIN 设置为 32/2 时,输出为:#pragma message: .text= 32/2。
我能做些什么来解决这个问题?我不会在 .lss 文件中搜索这样的解决方案:
uint16_t x = BEGIN;
PORTB = x>>8;
PORTA = x;
谢谢。
【问题讨论】:
-
当您将
BEGIN定义为32/2时,您期望输出是什么? -
什么是“.lss 文件”?
-
不可能...
-
C 预处理器只会计算
#if条件内的东西。你不会让它计算和打印一些东西(让我们忽略像 BOOST_PP 这样的可憎的东西)。另见:stackoverflow.com/questions/1560357/… -
@JohnBollinger .lss 文件是从 AVR-GCC 生成的汇编器输出文件。值 32/2 只是一个示例。稍后计算 .text 部分。
标签: c c-preprocessor avr-gcc atmelstudio