小编Lin*_*een的帖子

Makefile模式规则失败?

使用GNU-make时,我的Makefile有一些模式规则:

%.o:%.c
    gcc $< -o:$@
Run Code Online (Sandbox Code Playgroud)

这个规则由我添加.

但是当我确实犯了它时会给出一个错误,说没有规则来制作目标%.o并且不会构建目标.

有时,还有其他行为.当我说第一次做时它没有构建目标(它给出错误说没有规则来制作目标),但是当我说立即再次制作时,它确实构建正确.

因此,当我明确指定每个源文件时,它会首次自行构建目标.

编辑:我在Centos上使用GNU-make(v6.3我猜,不确定).这可能是一些权限/用户ID /组ID问题吗?

有什么指示可以了解可能发生的事情和解决方案吗?

谢谢,-AD.

gnu-make

9
推荐指数
2
解决办法
7979
查看次数

计算sprintf()缓冲区的大小

一段时间(非常长)我经常使用下面的代码 - 然后在MSVC 6上 - 确定为具有可变参数的函数格式化字符串所需的内存:

void LogPrint(const char *pszFormat, ...)
{
    int          nBytes;
    char        *pszBuffer;
    va_list      args;

    va_start(args, pszFormat);
    nBytes = vsnprintf(0, 0, pszFormat, va);
    va_end(args);

    // error checking omitted for brevity
    pszBuffer = new char[nBytes + 1];

    va_start(args, pszFormat);
    vsnprintf(pszBuffer, nBytes, pszFormat, va);
    va_end();

    // ...
}
Run Code Online (Sandbox Code Playgroud)

您在更新版本的MSVC(我现在使用的是2010)中遇到的明显错误是:

警告C4996:'vsnprintf':此函数或变量可能不安全.请考虑使用vsnprintf_s.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS.详细信息请参见在线帮助.

我是任何C(++)编译器的"将警告视为错误"选项的忠实粉丝,显然我的构建失败了.简单地使用#pragma warning (disable:4996)并继续使用它就像欺骗我一样.

所建议的"更安全"的替代vsnprintf_s(),但是注定要返回-1时,其"不安全"前身输入条件发生.

TL/DR:有没有办法实现预期的行为,vsnprintf()使用新的,更安全的变体来返回完成任务所需的内存?


编辑:简单定义_CRT_SECURE_NO_WARNINGS不会削减它; 还有很多strcpy()飞来飞去.它的新变种没有被打破,所以我仍然希望看到这些.

c++ printf visual-c++

9
推荐指数
1
解决办法
7332
查看次数

awk的$ 1与shell脚本中的$ 1冲突

我正在编写一个shell脚本,其中包含几行awk

awk行看起来像:

cat input.csv | awk -F, '$1~/$1/ {print "is good"}'
Run Code Online (Sandbox Code Playgroud)

第一$1是输入CSV的第一列,第二个$1被认为是这个外壳脚本的第一命令行输入

我试图把\第二个放在前面$,但它似乎无法正常工作.

有人可以帮忙吗?

bash shell awk

9
推荐指数
2
解决办法
6219
查看次数

连接:非套接字上的套接字操作

我是unix网络编程的新手,我曾尝试编写一个程序来连接到Google的服务器.但是,我在使用connect()函数时出错.(OS:OS X)

连接错误:非套接字上的套接字操作

我已经工作了4个小时,但我找不到问题.这是我的代码:

#define SERVPORT 80

int main (int argc, char **argv)
{
  int i, sockfd;
  struct hostent *host;
  struct sockaddr_in serv_addr;

  if ( (host = gethostbyname(argv[1])) == NULL) {
    printf("gethostbyname error\n");
    exit(1);
  }

  for (i = 0; host->h_addr_list[i]; i++) {
    if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0) == -1)) {
    printf("socket error\n");
    exit(1);
    }

    bzero(&serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(SERVPORT);
    serv_addr.sin_addr = *( (struct in_addr *)host->h_addr_list[i]);
    const char *ip = inet_ntoa(serv_addr.sin_addr);
    printf("connect to %s\n", ip);

    if …
Run Code Online (Sandbox Code Playgroud)

c unix sockets networking

8
推荐指数
1
解决办法
3万
查看次数

光标JOIN具有相同的列名称

如何访问具有相同名称的列?我尝试过,cursor.getString(cursor.getColumnIndexOrThrow("table.column"))但似乎没有用

android android-cursor

8
推荐指数
1
解决办法
2321
查看次数

来自多个表的mysql count(*)

我有一个MYSQL数据库,其中包含我公司客户每天使用我们服务的数据.

数据库中的每个表表示一个24小时的时间段以及在该时间段内发生的所有客户事务.

我想计算几天内的总交易量

到目前为止,我有一个select语句执行以下操作

select 
  (
    select count(customer) from 2010Dec28 
    where customer='<customer name>'
  ) as t1,
  (
    select count(customer) from 2010Dec29 
    where customer='<customer name>'
  )as t2;`
Run Code Online (Sandbox Code Playgroud)

但这会将结果作为两个单独的计数返回

| t1   | t2    |
| 1438 | 16282 |
1 row n set (0.00 sec)`
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在我的应用程序代码中生成这两个结果的总和而不必这样做.

mysql select count

7
推荐指数
3
解决办法
7890
查看次数

关于PHP会话的几个问题

我有一些关于php会话的问题:

  1. 由于默认值session.gc_maxlifetime24分钟,那么这意味着,任何一届会议的文件不会被修改为24分钟,将被删除,会话将自动失效.

  2. 如果我session_destroy()在我的代码中使用会话将被取消设置,但会话文件本身将不会被删除,直到自上次修改后经过24分钟.

  3. 延长会话寿命(超过24分钟)的唯一方法是扩展session.gc_maxlifetime到更大的值.

这些都是正确的还是我弄错了?

此外,如果我session_set_save_handler()将会话存储在数据库中(使用),所有这些规则是否适用于它们?

php session session-timeout session-cookies

7
推荐指数
1
解决办法
296
查看次数

在sqlite中如果表中不存在相同的列,如何在表中添加列

当且仅当表中不存在相同的列时,如何在SQLite表中添加列?

使用ALTER TABLE我能够创建一个新列,但想知道如何检查表中是否已存在该列?

sql database sqlite

6
推荐指数
3
解决办法
2万
查看次数

复制构造函数应该是私有的还是公共的

我正在编写一个抽象类,它将成为其他几个类的父类.我认为复制构造函数应该是私有的,因为你使用的是抽象类,没有什么可以复制的.但是,我不是100%肯定.

我是否正确,如果我不是为什么要公开或受到保护?

c++ private public copy-constructor

6
推荐指数
2
解决办法
1952
查看次数

在上传到Google Play商店时为应用启用GCM

我正在将应用程序上传到实施GCM的Google Play商店.

如何在上传到Google Play商店时为该应用启用GCM?有一个名为"启用Google Cloud Messaging Stats"的部分.

尝试修改GCM Sender Id时出现此错误:

无效的GCM API密钥或C2DM客户端登录令牌(错误密钥).

任何人都可以解释在上传到Android市场时为应用程序启用GCM的步骤.

android google-cloud-messaging

6
推荐指数
2
解决办法
2443
查看次数