voID somefunc(char buffer[10]);voID somefunc(char buffer[10]) { int i; for (i = 0; i < 10; i++) buffer[i] = 0;}int main(int argc,char **argv) { somefunc("literal"); return 0;}
这种情况可能在编译时被识别,但是VS2010和gcc似乎并没有这样做.使用const char *参数调用somefunc将生成编译器警告.
解决方法 gcc:使用标志-Wwrite-stringsPS. gcc手册解释了为什么这不是 – 的一部分.无论如何,一如以往,您应该找到适合您特定需求和编码风格的-W标志的组合.例如,在最近的一个项目中,我使用了这样的一些方法:-Werror -Wall -Wextra -Wformat = 2 -Winit-self -Wswitch-enum -Wstrict-aliasing = 2 -Wundef -Wshadow -Wpointer-arith -Wbad-function -cast -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wold-style-deFinition -Wmissing-prototypes -Wmissing-declaration-Wredundant-decls -Wnested-externs -Winline -WDisabled-optimization -Wunused-macros -Wno-未使用
总结以上是内存溢出为你收集整理的字符串字面量与C中的const char *全部内容,希望文章能够帮你解决字符串字面量与C中的const char *所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)