我正在尝试像这样做一个简单的sprintf
:
snprintf(dest, maxlen_dest, "%'lu", along);
请注意字符串中的引号: '
。
这意味着(根据手册):
'对于十进制转换(i,d,u,f,F,g,G),输出为 如果是区域设置,则将数千个分组字符分组 信息表明任何。请注意,许多版本的gcc(1)都不能 解析此选项并发出警告。 SUSv2不包括 %'F
所以当我编译时,我收到了这个警告:
../common/utils.c:29: warning: ISO C does not support the ''' printf flag
../common/utils.c:29: warning: ISO C does not support the ''' printf flag
所以,我的问题是:是否有一个“支持''''printf标志”的功能?我可以使用吗?
我希望我的输出像:
51 254 234
1 424 000
...
...
...
这是我的Makefile(如果有一些我应该修改的选项):
CC = gcc
# -g = all debug options
CFLAGS = -g -I../common -W -Wall -pedantic -std=c99
OBJECTS = o/main.o o/opts.o o/verif_liens_bidirectionnels.o o/ecriture.o o/plugin_utils.o o/plugin_algo_groupes.o ../common/o/cell.o ../common/o/utils.o ../common/o/verif.o ../common/o/lecture.o
gen : $(OBJECTS)
$(CC) -o gen $(OBJECTS) $(CFLAGS) -lm -lgd -lz
o/main.o : main.c
$(CC) -o $@ -c main.c $(CFLAGS)
o/opts.o : opts.c opts.h
$(CC) -o $@ -c opts.c $(CFLAGS)
o/verif_liens_bidirectionnels.o : verif_liens_bidirectionnels.c verif_liens_bidirectionnels.h
$(CC) -o $@ -c verif_liens_bidirectionnels.c $(CFLAGS)
o/ecriture.o : ecriture.c ecriture.h
$(CC) -o $@ -c ecriture.c $(CFLAGS)
o/plugin_utils.o : plugin_utils.c plugin_utils.h
$(CC) -o $@ -c plugin_utils.c $(CFLAGS)
o/plugin_algo_groupes.o : plugin_algo_groupes.c plugin_algo_groupes.h
$(CC) -o $@ -c plugin_algo_groupes.c $(CFLAGS)
../common/o/cell.o : ../common/cell.c ../common/cell.h
$(CC) -o $@ -c ../common/cell.c $(CFLAGS)
../common/o/utils.o : ../common/utils.c ../common/utils.h
$(CC) -o $@ -c ../common/utils.c $(CFLAGS)
../common/o/verif.o : ../common/verif.c ../common/verif.h
$(CC) -o $@ -c ../common/verif.c $(CFLAGS)
../common/o/lecture.o : ../common/lecture.c ../common/lecture.h
$(CC) -o $@ -c ../common/lecture.c $(CFLAGS)
clean :
rm $(OBJECTS)
答案 0 :(得分:2)
你可以添加
../common/o/utils.o : CFLAGS := $(filter-out -pedantic,$(CFLAGS))
到makefile,它应该禁止特定文件的警告。
如果您不想依赖非标准的libc扩展,则必须自己实现该功能......