我通过定义main
使链接器高兴,即使在我的程序中没有main
函数。这在C99标准下有效吗?
void foo()
{
__asm__ (".globl mainnn"
"main:n"
"txorl %eax, %eaxn"
"tret");
}
<<p> 生活例子/strong> 不,C标准没有定义任何内联程序集的行为。
实现可以提供__asm__
关键字,但只能作为扩展。特别是,C99标准将asm
块列在信息(非规范)节J.5.10 asm关键字:
更精确地说,你的程序不符合严格的。出自§4/p5 一致性(强调我的):
asm
关键字可用于直接插入汇编语言转换器输出(6.8)。最常见的实现是通过a格式的语句:
asm ( character-string-literal );
严格符合的程序只能使用的2)
在C语言中没有__asm__
关键字,所以使用C语言中没有定义的关键字意味着你的程序没有严格遵守。