即使我的程序中没有main
函数,我也通过定义main
来使链接器满意。这是否符合C99标准?
void foo()
{
__asm__ (".globl main\n\n"
"main:\n"
"\txorl %eax, %eax\n"
"\tret");
}
答案 0 :(得分:4)
不,C标准没有定义任何内联汇编的行为。
答案 1 :(得分:3)
实施可能会提供__asm__
个关键字,但仅作为扩展名。特别是,C99标准列出了信息(非规范)部分中的asm
块J.5.10 asm关键字:
asm
关键字可用于直接插入汇编语言 翻译输出(6.8)。最常见的实现是通过a 表格声明:
asm ( character-string-literal );
最确切地说,您的程序不是严格符合。从§4/ p5 一致性(强调我的):
严格遵守程序 只能使用的那些功能 本国际标准中规定的语言和库。 2)
答案 2 :(得分:2)
C中没有__asm__
个关键字,因此使用未在C中定义的关键字的简单事实意味着您的程序不严格符合。