我有点喜欢有我自己的sprintf函数的想法,没有string.h .h或stdio.h臃肿的软件。
#define sprintf(x) my_sprintf(x)
void my_sprintf(const char * string);
int main(void)
{
sprintf("abc");
}以下是我的LD标志:
LDFLAGS += -lgcc
LDFLAGS += --specs=nano.specs
LDFLAGS += -mthumb
LDFLAGS += -mcpu=cortex-m4
# LDFLAGS += --gc-sections
# LDFLAGS += -nostartfiles
# LDFLAGS += -nodefaultlibs
# LDFLAGS += -gc-sections如您所见,我取消了nostartfiles和nodefaultlibs选项。因此,即使我想要包含string.h .h或stdio.h,编译器也可能找到sprintf函数的定义/引用。
所以我想知道,如果#define与现有的函数名相同,它是否仍会引用“重定义”。
我们热诚欢迎您的帮助。
发布于 2020-01-07 20:23:43
是的,但更简单的方法是使用独立环境:
gcc -ffreestanding ...如果你想知道你的方法是否会在所有文件中生效(例如file1.c中的#define function(x) y和file2.c中的function(z) ),那么不会。
https://stackoverflow.com/questions/59628355
复制相似问题