有没有一种方法可以在不使用任何运行时库的情况下使用Visual Studio 2015编译C/C++?
我需要在没有运行时库的情况下进行编译,因为我正在创建自己的运行时库(对于我的操作系统).
C/C++上有选项 - >代码生成 - >运行时库
但我想要一个"无"的选项.
我知道丢失了CRT中的很多功能.
考虑以下功能:
void foo(){
//do something
}
Run Code Online (Sandbox Code Playgroud)
在组装时,它看起来像这样(不准确):
push something
;do stuff
pop something
ret
Run Code Online (Sandbox Code Playgroud)
但是我不想要这个生成的代码(RET,PUSH,POP ...)。我只想在代码块上加上标签,所以我必须返回自己:
void bar(){
//do something
asm("iret") //i want to use this function as a ISR
}
Run Code Online (Sandbox Code Playgroud)
并在组装中看起来像这样:
; do something
iret
Run Code Online (Sandbox Code Playgroud)
没有PUSH,POP或RET。是否有任何预处理器指令或关键字可以帮助我完成此任务?
我正在Windows下使用GCC和NASM,并且试图生成自己的中断服务例程(ISR)。
我有以下代码:
class A
{
public:
int foo = 0;
};
class B: public A
{
public:
int foo = 1;
};
int main()
{
A *a = new B();
std::cout << a->foo;
std::getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:0
为什么 B 不覆盖 A 中的成员 foo ?
以及如何在不强制转换为派生类的情况下获得所需的 1 输出