使用下划线字符

时间:2014-03-06 12:19:29

标签: assembly character preprocessor

我总是想知道c和汇编声明中的下划线字符的功能(以及其他地方)。 在像

这样的陈述中,'_'的含义是什么?
MSVCRT!_output:
77c3f0f3 55               push    ebp
77c3f0f4 8bec             mov     ebp,esp
77c3f0f6 81ec50020000     sub     esp,0x250
77c3f0fc 33c0             xor     eax,eax
77c3f0fe 8945d8           mov     [ebp-0x28],eax
77c3f101 8945f0           mov     [ebp-0x10],eax
77c3f104 8945ec           mov     [ebp-0x14],eax
77c3f107 8b450c           mov     eax,[ebp+0xc]

#ifdef __unix__ /* __unix__ is usually defined by compilers targeting Unix systems */
# include <unistd.h>
#elif defined _WIN32 /* _Win32 is usually defined by compilers targeting 32 or 64 bit Windows systems */
# include <windows.h>
#endif

#if !(defined __LP64__ || defined __LLP64__) || defined _WIN32 && !defined _WIN64
    // we are compiling for a 32-bit system
#else
    // we are compiling for a 64-bit system
#endif

在C预处理器中? (这些只是我在飞行中选择的例子=

为什么以及何时使用单下划线? 非常感谢你的帮助! Ñ

1 个答案:

答案 0 :(得分:0)

汇编中的下划线字符没有特殊含义。它通常用作长描述性标签中空格的替代:jumps_here_when_the_things_go_wrong:

无论如何,使用下划线作为第一个char可能只是C编程的习惯。来自其他语言的汇编程序员不使用这样的标签。

我个人认为,仅在库中使用以下划线开头的标签,仅供内部使用的全局标签使用。

所使用的下划线的数量取决于从图书馆外部使用此标签的不受欢迎程度 - 一个下划线表示“想想你做的”,三个下划线表示“从不,根本不使用它”。