如果能理解如何重写这行代码以消除编译器警告,我将非常感激。代码是:
if (string == nil)
[NSException raise:NSInvalidArgumentException format:nil];
警告是:
Format not a string literal and no format arguments.
我找到了关于NSLog的答案,但没有找到关于NSException的答案。
日航
对于将NSString类型包含在另一个字符串中,我可能使用了错误的符号。
const char* error; //it's set, not nil
NSLog([NSString stringWithFormat : @"Problem with SQL statement in \n %@ \n %@",sqlQuery,[NSString stringWithUTF8String:error]]);
这个表达式有效,但我收到了这样的警告:
Formatting string is not a string literal(potentially insecure
我试图在C++中创建的这个Bingo Board总是出现分段错误。Valgrind没有告诉我更多的事情:
==2734== Memcheck, a memory error detector
==2734== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==2734== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==2734== Command: ./Bingo
==2734==
==2734== Invalid
我已经编写了一个小的库函数来帮助我在脚本所有者不是root用户时退出:
#!/bin/bash
# Exit for non-root user
exit_if_not_root() {
if [ "$(id -u)" == "0" ]; then return; fi
if [ -n "$1" ];
then
printf "%s" "$1"
else
printf "
假设我只想NSLog一个字符串-有人能解释一下它们之间的区别吗:代码1:
NSString *testString;
testString = [[NSString alloc] init];
testString = @"Here's a test string in testString!";
NSLog(@"testString: %@", testString);
和代码2:
NSString *testString = @"Here's a test string in testString!";
NSLo
最近,我一直试图通过一些C基础知识来尝试建立对低级语言的基本理解。在我遇到的一个文档()中,作者在printf语句中使用了一个空指针:
int var = 2;
printf("var has the value %d and is stored at %p\n", var, (void *) &var);
并说明了原因:
我将指向整数的指针转换为空指针,以使它们与%p转换规范兼容。
但是,省略(void *)不会导致错误或警告,无论是编译和运行还是通过valgrind运行。
int var = 2;
printf("var has the value
下面的程序在C语言中编译得很好,有警告,但是在C++中编译失败。为什么?原因何在?
#include <stdio.h>
int main(void)
{
char a[5]="Hello";
a[0]='y';
puts(a);
for(int i=0;i<5;i++)
printf("%c",a[i]);
return 0;
}
警告:
Warning:[Error] initializer-string for array of chars is too long [
在我的shell脚本中,我定义了一些需要作为信息、警告或错误记录的消息。
这些信息如下:
###### This may not be correct syntax as I need to know this #######
BACKUP_INFO="File {} is compressed at path {}."
ERROR_FILE_NOT_EXIST="File {} doesn\'t exist."
OTHER_ERROR="Cannot backup File {}, Reason: {}"
我有一种方法可以将这些信息记录
假设我有以下函数:
void fprint(float f, int ds) {
printf("%.%df\n", ds, f);
}
我希望调用方指定要打印的浮点数,以及小数点之后的数字数。(由.%d说明符指示)
但是,在编译这个时,我会收到两个警告:
./sprint.h: In function ‘fprint’:
./sprint.h:19:14: warning: conversion lacks type at end of format [-Wformat=]
printf("%.%df\n", ds, f);