小编ant*_*009的帖子

空声明中无用的类存储说明符

gcc 4.4.1 c89

我有以下代码:

static enum states
{
    ACTIVE,
    RUNNING,
    STOPPED,
    IDLE
};
Run Code Online (Sandbox Code Playgroud)

我收到警告:

useless class storage specifier in empty declaration
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除静态关键字,我不会收到该警告.

我正在使用以下标志进行编译:

-Wall -Wextra
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议,

c enums

26
推荐指数
4
解决办法
4万
查看次数

链接静态库时的"未定义引用"

g ++(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5

我有以下名为sdpAPI.a的静态库.我在尝试将其与我的测试应用程序链接时遇到问题.只是想知道我是否做错了什么.静态库是用g ++构建的;

我的目录如下:

/projects/unit_test/main.c
/projects/unit_test/sdp/inc/sdpAPH.h
/projects/unit_test/sdp/lib/sdpAPI.a
Run Code Online (Sandbox Code Playgroud)

我的源代码是这样的:

#include <stdio.h>

#include "sdpAPI.h"

int main(void)
{
    printf("----- TEST SDP ------\n");

    try {
        sdpSessionDescription sdp;
        sdp.clear();
    }
    catch(...) {
        printf("----- TEST FAILED --------\n");
        return 0;
    }

    printf("------ TEST SUCCESSFULL ------\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的Makefile是这样的:

OBJECT_FILES = main.o
CC = g++
CFLAGS = -Wall -Wextra -Wunreachable-code -ggdb -O0
TARGET = sdp_demo

INC_PATH = -I sdp/inc
LIB_PATH = -L sdp/lib/sdpAPI.a

$(TARGET): $(OBJECT_FILES)
 $(CC) $(CFLAGS) $(INC_PATH) $(LIB_PATH) $(OBJECT_FILES) -o $(TARGET)

main.o: main.c
 $(CC) …
Run Code Online (Sandbox Code Playgroud)

c++ static-libraries

26
推荐指数
2
解决办法
7万
查看次数

C#private,static和readonly

我正在审查log4net的一些代码,我遇到了这个.

private static readonly ILog logger = LogManager.GetLogger(typeof(AdminClient));
Run Code Online (Sandbox Code Playgroud)

我想知道为什么你需要私有静态只读.

从我的理解私有意味着变量不能在类外使用,除非有一个访问器方法或获取属性.

static意味着变量仅在此文件中作用域.

readonly意味着您只能从值中读取并且无法分配它.

所以,我在想那个编写这段代码的人.声明它是私有的,因为他们不希望它在类外使用和静态,因此不希望它在文件外部使用.但是,如果有一个get属性会静态阻止这种形式发生.

我想我只能理解readonly,而且只能读取和设置值.

非常感谢任何建议,

c# log4net access-modifiers

24
推荐指数
3
解决办法
9612
查看次数

归零记忆

gcc 4.4.4 C89

我只是想知道大多数C程序员在想要将内存归零时做了什么.

例如,我有一个1024字节的缓冲区.有时我会这样做:

char buffer[1024] = {0};
Run Code Online (Sandbox Code Playgroud)

这将使所有字节为零.

但是,我应该这样声明并使用memset吗?

char buffer[1024];
.
.
memset(buffer, 0, sizeof(buffer));
Run Code Online (Sandbox Code Playgroud)

有没有真正的理由你必须将记忆归零?不做的最坏情况是什么?

c

24
推荐指数
4
解决办法
4万
查看次数

lvalue需要作为递增操作数

gcc 4.4.4

我究竟做错了什么?

char x[10];
char y[] = "Hello";
while(y != NULL)
    *x++ = *y++;
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议.

c pointers

24
推荐指数
5
解决办法
6万
查看次数

隐式声明函数usleep

gcc (GCC) 4.6.3
c89
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用usleep.但是,我一直收到以下警告:

隐式声明函数usleep

我已经包含了unistd.h头文件.

手册页提到了这个问题.但我不确定我理解它:

usleep():
   Since glibc 2.12:
       _BSD_SOURCE ||
           (_XOPEN_SOURCE >= 500 ||
               _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
           !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
   Before glibc 2.12:
       _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
Run Code Online (Sandbox Code Playgroud)

但不确定我对上述内容做了什么?

c usleep

24
推荐指数
4
解决办法
4万
查看次数

获取make以在特定目录中创建目标文件

GNU Make 3.82
gcc 4.7.2
c89
Run Code Online (Sandbox Code Playgroud)

我有以下make文件:

INC_PATH=-I/home/dev_tools/apr/include/apr-1
LIB_PATH=-L/home/dev_tools/apr/lib
LIBS=-lapr-1 -laprutil-1
RUNTIME_PATH=-Wl,-rpath,/home/dev_tools/apr/lib
CC=gcc
CFLAGS=-Wall -Wextra -g -m32 -O2 -D_DEBUG -D_THREAD_SAFE -D_REENTRANT -D_LARGEFILE64_SOURCE $(INC_PATH)
SOURCES=$(wildcard src/*.c)
OBJECTS=$(patsubst %.c, %.o, $(SOURCES))

EXECUTABLE=bin/to

all:    build $(EXECUTABLE)

$(EXECUTABLE):  $(OBJECTS)
    $(CC) $(CFLAGS) -o $@ $(RUNTIME_PATH) $(OBJECTS) $(LIB_PATH) $(LIBS)

$(OBJECTS): $(SOURCES)
    $(CC) $(CFLAGS) -c $(SOURCES) $(LIB_PATH) $(LIBS)

build:
    @mkdir -p bin

clean:
    rm -rf $(EXECUTABLE) $(OBJECTS) bin
    find . -name "*~" -exec rm {} \;
    find . -name "*.o" -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

我的目录结构是这样的project/src project/bin …

makefile gnu-make

24
推荐指数
2
解决办法
7万
查看次数

C#自动检测代理设置

C#2008 SP1

我正在使用代码来检测是否已在"Internet选项"下设置代理.如果有代理,那么我将在我的webclient中设置它.

所以我只是检查代理的地址是否存在.如果没有,那么在webclient中没有设置代理.

这是正确的方法:

非常感谢任何建议,

WebProxy proxy = WebProxy.GetDefaultProxy();

if (proxy.Address.ToString() != string.Empty)
{
    Console.WriteLine("Proxy URL: " + proxy.Address.ToString());
    wc.Proxy = proxy;
}
Run Code Online (Sandbox Code Playgroud)

======代码编辑======

[DllImport("wininet.dll", CharSet = CharSet.Auto)]
private extern static bool InternetGetConnectedState(ref InternetConnectionState_e lpdwFlags, int dwReserved);

[Flags]
enum InternetConnectionState_e : int
{
    INTERNET_CONNECTION_MODEM = 0x1,
    INTERNET_CONNECTION_LAN = 0x2,
    INTERNET_CONNECTION_PROXY = 0x4,
    INTERNET_RAS_INSTALLED = 0x10,
    INTERNET_CONNECTION_OFFLINE = 0x20,
    INTERNET_CONNECTION_CONFIGURED = 0x40
}     

// Return true or false if connecting through a proxy server
public bool connectingThroughProxy()
{
    InternetConnectionState_e flags …
Run Code Online (Sandbox Code Playgroud)

c# proxy networking

23
推荐指数
4
解决办法
5万
查看次数

Apache可移植运行时教程?

我的平台是Uccntu 10.4上的gcc 4.4.3,C89.

我正在寻找一些安装和使用Apache便携式运行时的教程或电子书.

到目前为止,我只找到了下面的链接.我正在寻找更多信息.一本书籍教科书,解释了从安装apr到链接和编译应用程序的所有内容.

http://apr.apache.org/docs/apr/1.4/index.html

http://dev.ariel-networks.com/apr/apr-tutorial/html/apr-tutorial.html#toc1

非常感谢任何建议,

c portability

23
推荐指数
1
解决办法
9470
查看次数

测试互联网连接的最快方法

C#2008 SP1

我使用此代码连接到我们的客户端网站.这适用于软电话应用程序.在用户拨打电话之前,软电话必须测试是否存在活动的Internet连接.

所以,希望我所做的是使用httpWebRequest类连接到我们的客户网站.如果响应正常,则可以继续进行Internet连接.

但是,我注意到响应的响应时间太长.我不确定这不是一种非常有效的测试方法.

但是,当我浏览他们的网站时,加载页面只需不到一秒钟.但是当我使用HttpWebRequest类时需要太长时间

所以对此的要求是:

有时会在客户办公室使用代理.我不能使用TCPClient类(没有代理属性).

代理不支持SOCKS,因此无法使用Sockets类.

我需要使用超时属性.所以不能使用WebClient类.这是因为软电话会冻结,直到返回响应.几秒钟后超时.

所以我唯一能想到的就是HttpWebRequest类.

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.xxxxxxxxx.com");
            request.Timeout = 5000;
            request.Credentials = CredentialCache.DefaultNetworkCredentials;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            if (response.StatusCode == HttpStatusCode.OK)
            {
                Console.WriteLine("IsSIPServerAvailable: " + response.StatusCode);
                isAvailable = true;
            }
Run Code Online (Sandbox Code Playgroud)

========使用p\Invoke编辑====

 [DllImport("wininet.dll", CharSet = CharSet.Auto)]
    private extern static bool InternetGetConnectedState(ref InternetConnectionState_e lpdwFlags, int dwReserved);

 [Flags]
    enum InternetConnectionState_e : int
    {
        INTERNET_CONNECTION_MODEM = 0x1,
        INTERNET_CONNECTION_LAN = 0x2,
        INTERNET_CONNECTION_PROXY = 0x4,
        INTERNET_RAS_INSTALLED = 0x10,
        INTERNET_CONNECTION_OFFLINE = 0x20,
        INTERNET_CONNECTION_CONFIGURED = 0x40
    }

 // In function …
Run Code Online (Sandbox Code Playgroud)

c# networking

22
推荐指数
3
解决办法
4万
查看次数