我偶然发现了一些像这样的(c ++)代码:
int $T$S;
Run Code Online (Sandbox Code Playgroud)
首先,我认为它是某种PHP代码或者错误地粘贴在那里但它编译并运行得很好(在MSVC 2008上).
什么类型的字符对C++中的变量有效,是否还有其他奇怪的字符可以使用?
我正在使用一些最初为IAR编写的代码,并使用GCC编译器将其转换为编译.
但是由于我不理解语法或正在发生什么,因此我遇到了一条特定的行.
__root const uint32_t part_number @ ".part_number" = 701052;
Run Code Online (Sandbox Code Playgroud)
我发现的__root是这样的,即使没有任何实际引用它的变量也包含在最终代码中.const意味着它不会改变并保存在ROM而不是RAM中.
这是我不遵循的@".part_number"部分.我得到的具体错误是"stray'@'in program".
我知道@不是标准C的一部分,但我没有任何运气找到解释我所看到的语法的任何东西.
如果有人能够解释它,我会非常感激.
谢谢
在手册页中nm。它说
\n\n\n\xe2\x80\x9cA\xe2\x80\x9d 符号的值是绝对的,不会因进一步链接而改变。
\n
但是,我不知道这意味着什么。如何在 C 中定义一个变量或其他东西以使其值绝对?
\n\ntest.c如果我在其文件范围内声明一个变量
int a;\nRun Code Online (Sandbox Code Playgroud)\n\n然后在 的输出中nm,a 的条目在我的机器上将如下
int a;\nRun Code Online (Sandbox Code Playgroud)\n\n所以我想知道我该怎么做才能使nm变量的输出 \xe2\x80\x9cA\xe2\x80\x9d 。而且我不知道 \xe2\x80\x9cabsolute\xe2\x80\x9d 是什么意思。