标签: c

为什么编译的Java类文件小于C编译文件?

我想知道为什么我们从编译.c文件得到的.o文件打印出"Hello,World!" 大于Java .class文件,也打印"Hello,World!"?

c java bytecode executable-format

12
推荐指数
2
解决办法
3153
查看次数

AIX上的asprintf的替代或解决方法

我正在尝试在AIX上构建python-kerberos.kerberospw.c使用了对asprintf的调用,但是从谷歌告诉我的是,asprintf在AIX上不存在.

我看到http://www.koders.com/c/fidAA9B130D588302673A28B568430A83131B7734C0.aspx?s=windows.h,它看起来像我可以创建一个替身asprintf,但我不知道这个会去或我会怎样#include它在kerberospw.c中.

有没有办法可以使用koders.com示例或其他一些代码"伪造"asprintf?我可以只包含asprintf函数,如kerberospw.c所示?我不是C编码员,但是

asprintf(char**resultp,const char*format,...)

用最后的圆点看起来对我来说不是一个有效的签名.kerberospw.c的相关部分如下

asprintf(消息"%*S:%*S",(int)的result_code_string.length,
(字符*)result_code_string.data,
(INT)result_string.length,
(字符*)result_string.data);

我知道我可以联系上python-的Kerberos的作者,但)我认为这将是有帮助的潜在的补丁,如果我这样做,和b)有可能是其他的软件我碰到运行使用asprintf,这将是很高兴有一个解决方法.

c aix printf asprintf

12
推荐指数
2
解决办法
2816
查看次数

/ usr/bin/ld:警告:abc.so,找不到xyz.so(尝试使用-rpath或-rpath-link)"

我正在构建一个C++应用程序,使用Netbeans 6.9作为我的IDE.我有一个C++库,它是纯C库的包装器.

我已将文件正确添加到项目中(使用"添加库文件"选项).这是g ++和链接器产生的输出:

g++  -o dist/Debug/GNU-Linux-x86/testluaembed build/Debug/GNU-Linux-x86/src/main.o build/Debug/GNU-Linux-x86/src/LuaBinding.o -L../../mainline/tanlib_core/dist/Debug/GNU-Linux-x86 -L../../mainline/tanlib++/dist/Debug/GNU-Linux-x86 -L/usr/lib ../../mainline/tanlib_core/dist/Debug/GNU-Linux-x86/libtanlib_core.so ../../mainline/tanlib++/dist/Debug/GNU-Linux-x86/libtanlibpp.so /usr/lib/liblua5.1.a /usr/lib/libtolua++5.1.a /usr/local/boost_1_45_0/stage/lib/libboost_filesystem.a /usr/local/boost_1_45_0/stage/lib/libboost_system.a 
/usr/bin/ld: warning: libtanlib_core.so, needed by ../../mainline/tanlib++/dist/Debug/GNU-Linux-x86/libtanlibpp.so, not found (try using -rpath or -rpath-link)
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc':
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc':
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc':
/usr/lib/liblua5.1.a(loadlib.o): In function `ll_loadfunc':
/usr/lib/liblua5.1.a(loadlib.o): In function `gctm':
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/testluaembed] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
Run Code Online (Sandbox Code Playgroud)

我在C++包装器库上运行ldd并得到了这个输出:

$ldd libtanlibpp.so 
    linux-vdso.so.1 =>  (0x00007fff123c0000)
    libtanlib_core.so => …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc ld

12
推荐指数
1
解决办法
9992
查看次数

为什么C快速排序功能比气泡排序功能慢得多(磁带比较,磁带交换)?

我将为学生实现一个玩具磁带"大型机",显示"快速排序"类功能的快速性(递归与否,由于硬件速度慢,并且众所周知的堆栈反转技术并不重要) "bubblesort"函数类.因此,虽然我清楚硬件实现和控制器,但我猜测,快速排序功能在顺序,顺序和比较距离方面要比其他功能快得多(从中间回放磁带要快得多)结束,因为倒带速度不同).

不幸的是,事实并非如此; 这个简单的"气泡"代码在比较距离,方向和比较和写入次数方面与"快速排序"功能相比显示出很大的改进.

所以我有3个问题:

  1. 我实施快速排序功能时是否有错?
  2. 我在实现bubblesoft功能时遇到了错误吗?
  3. 如果没有,为什么"bubblesort"在(比较和写入操作)中的功能比"quicksort"功能快得多?

我已经有了"quicksort"功能:

void quicksort(float *a, long l, long r, const compare_function& compare)
{
    long i=l, j=r, temp, m=(l+r)/2;
    if (l == r) return;
    if (l == r-1)
    {
        if (compare(a, l, r))
        {
            swap(a, l, r);
        }
        return;
    }
    if (l < r-1)
    {
        while (1)
        {
            i = l;
            j = r;
            while (i < m && !compare(a, i, m)) i++;
            while (m < j && !compare(a, m, j)) j--;
            if (i …
Run Code Online (Sandbox Code Playgroud)

c algorithm performance quicksort bubble-sort

12
推荐指数
2
解决办法
1267
查看次数

C的std :: vector替代品

我想知道在C中是否有替代std :: vector?我发现了这个实现,但似乎包含内存重新分配的一些问题.

c arrays stl stdvector

12
推荐指数
2
解决办法
4483
查看次数

调用函数返回struct的约定

对于以下C代码:

struct _AStruct {
    int a;
    int b;
    float c;
    float d;
    int e;
};

typedef struct _AStruct AStruct;

AStruct test_callee5();
void test_caller5();

void test_caller5() {
    AStruct g = test_callee5();
    AStruct h = test_callee5();    
}
Run Code Online (Sandbox Code Playgroud)

我得到Win32的以下反汇编:

_test_caller5:
  00000000: lea         eax,[esp-14h]
  00000004: sub         esp,14h
  00000007: push        eax
  00000008: call        _test_callee5
  0000000D: lea         ecx,[esp+4]
  00000011: push        ecx
  00000012: call        _test_callee5
  00000017: add         esp,1Ch
  0000001A: ret
Run Code Online (Sandbox Code Playgroud)

而对于Linux32:

00000000 <test_caller5>:
   0:  push   %ebp
   1:  mov    %esp,%ebp
   3:  sub    $0x38,%esp
   6:  lea    0xffffffec(%ebp),%eax
   9:  mov …
Run Code Online (Sandbox Code Playgroud)

c linux windows x86 calling-convention

12
推荐指数
1
解决办法
3184
查看次数

在C中,访问我的数组索引更快或通过指针访问更快?

在C中,访问数组索引更快或通过指针访问更快?我的意思是更快,哪一个会占用更少的时钟周期.该数组不是常量数组.

c optimization assembly

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

如何在Linux上将波特率设置为307200?

基本上我使用以下代码来设置串口的波特率:

struct termios options;
tcgetattr(fd, &options);
cfsetispeed(&options, B115200);
cfsetospeed(&options, B115200);
tcsetattr(fd, TCSANOW, &options);
Run Code Online (Sandbox Code Playgroud)

这非常有效.但是我知道我必须使用波特率为307200的设备进行通信.我该如何设置?cfsetispeed(&options, B307200);不起作用,没有B307200定义.

我尝试使用MOXA Uport 1150(实际上是USB转串口转换器)和英特尔主板的标准串口.我不知道后者的确切类型,setserial只是将其报告为16550A.

c c++ linux serial-port baud-rate

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

确定一个字符串是否包含所有唯一字符?

任何人都可以告诉我如何实现一个程序来检查包含所有唯一字符的字符串?

c string algorithm unique

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

C - 将int转换为char并将char附加到char

我正在制作我的第一个并行应用程序,但我坚持使用C的基础知识.我需要知道,如何将int转换为char,然后如何将一个char附加到另一个.

你可以帮我,我很高兴.谢谢.

c

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