小编use*_*064的帖子

如果在Ubuntu上安装了多个Java版本,如何检查Oracle Java版本

我的Ubuntu上安装了OpenJDKOracle Java.如果激活的java是OpenJDK,有没有办法在bash shell中检查Oracle java的版本?

java bash ubuntu

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

在GCC中动态创建va_list - 可以完成吗?

我的问题vsprintf是我无法直接获取输入参数,我必须首先获取输入并将它们保存在void**,然后传递void**vsprintf()它,这对于windows来说都很好,但是当我来到64位linux时,gcc无法编译因为它不允许转换void**va_list,是否有人可以给我一些帮助我应该如何在linux下执行此操作?

我可以在GCC中动态创建va_list吗?

void getInputArgs(char* str, char* format, ...)
{
    va_list args;
    va_start(args, format);
    vsprintf(str, format, args);
    va_end(args);
}  

void process(void)
{
    char s[256];
    double tempValue;
    char * tempString = NULL;
    void ** args_ptr = NULL;
    ArgFormatType format;   //defined in the lib I used in the code
    int numOfArgs = GetNumInputArgs();  // library func used in my code

    if(numOfArgs>1)
    {
        args_ptr = (void**) malloc(sizeof(char)*(numOfArgs-1));
        for(i=2; i<numOfArgs; i++)
        {
            format …
Run Code Online (Sandbox Code Playgroud)

c gcc x86-64 variadic-functions

8
推荐指数
2
解决办法
3036
查看次数

标量删除析构函数问题

我无法弄清楚为什么我会得到以下代码的错误.

对象A的实例将被连续推送到vector(vectorA.push_back(A a))中.所以有时vectorA需要重新分配; 将调用析构函数,这是调用析构函数的地方A,然后出现错误消息.

class A
{
    long filePos;

    union {
        Recording* recording;
        UINT64 timeStamp;
    };

public:
    inline A(long fpos, UINT64 ts) : filePos(fpos), timeStamp(ts) {}
    ~A()
    {
        if (getDetailedType() == RECORDING_TYPE)
            if (recording)
                delete recording; // error: scalar deleting destructor ???
    }

    inline short getDetailedType() const { return (short)(timeStamp % 5); }
    A(const A& edi)
    {
        filePos = edi.filePos;

        if (getDetailedType() == RECORDING_INFO)
            recording = edi.recording;
        else
            timeStamp = edi.timeStamp;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ destructor

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

是否可以使用 sudo 执行 makefile 的某些部分,而不使用 sudo 执行某些部分?

比如说,我有一个 makefile:

front:
    cd front && (sudo make -f Makefile.linux )   -- require sudo

back: 
    cd back && (make -f Makefile.linux )

clean:
    cd front && (make -f Makefile.linux clean)
    cd back  && (make -f Makefile.linux clean)
Run Code Online (Sandbox Code Playgroud)

有可能做到吗?如果是,那么正确的方法是什么?谢谢

丽江

linux makefile

5
推荐指数
1
解决办法
8617
查看次数

xcodebuild 在哪里加载设置(来自 Xcode 项目或来自 makefile 中的设置)?

我有一个使用 xcodebuild 构建 Xcode 项目的 makefile。我的问题是

是 makefile 中的设置(使用 xcodebuild)还是调用 makefile 来构建项目时将使用的 Xcode 项目中的设置?

例如,如果我在 makefile 中有一些设置,例如:

SDKROOT =/Developer/SDKs/MacOSX10.5.sdk ARCHS="i386 x86_64"
CXXFLGS =-I/Users/XXYY/dev/Frameworks/Headers -DUNIX   (just an example to show where to check header files, this is different from what is set in the Xcode project)

target:
       xcodebuild build -target $@ -configuration Release 


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

会不会用到这里的设置(SDKROOT 和 CXXFLGS)?

如果答案是肯定的,那么我可以设置我的 Xcode 项目(称为项目 A)以链接到放在 $(HOME)/Library/Frameworks 中的一些我自己的框架,然后将其发送给用户。

同时,当我构建这个项目 A 时,我可以将它设置为链接到与我在我的 makefile 中构建项目 A 的同时构建的框架。

这样,当用户打开我的项目 A 时,框架将链接到他们的 $HOME/Library/Frameworks。(框架将被要求复制到那里)

或者也许我可以问当我尝试发布一个项目(使用我自己的框架)时如何为我自己的框架设置搜索路径?makefile 中的过程将是:首先构建我的框架,然后是我的项目(显然,我的项目将链接到框架的新构建)。

如果我设置框架的路径链接到myframeworkfolder/build/Release/ * .frameworks,这个路径需要在项目复制到其他用户时重新设置。如果我将框架的路径设置为链接到,例如,/Library/Frameworks,则其他用户不需要更改路径。任何人都有建议我应该怎么做?或者我应该将我的框架的路径设置为/Library/Frameworks,然后当我完成构建框架时,将其复制到/Library/Frameworks,然后构建我的项目。这是正确的方法吗?

谢谢。

xcode makefile xcodebuild

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

applescript,将文件夹及其内容移动到垃圾箱

任何人都可以指出如何将文件夹及其内容移动到mac上的垃圾文件夹?

我试过这个:

 tell application "Finder"
      set sourceFolder to POSIX file "/Library/Frameworks/SDL.framework"
      set destFolder to POSIX file "/Users/XXX/.Trash"
      move entire contents of folder sourceFolder to folder destFolder
 end tell
Run Code Online (Sandbox Code Playgroud)

内容都没有了,但不是 SDL.framework 文件夹。

此外,当我测试删除到垃圾箱文件夹的文件时,右键单击文件,没有“放回”意见。有谁知道为什么?

谢谢。

丽江

applescript

2
推荐指数
1
解决办法
3236
查看次数

sprintf总是把格式写成字符串,错误的64位linux?

我在64位linux上使用sprintf的func.当我测试sprintf或snprintf写的字符串时,会发生奇怪的事情.我用它的方式:

char s[256];
int current=0;
for (int i=0; i<5; i++)
{
    current += sprintf(s+current, "d", i);
}

printf("string is %s \n", s);
Run Code Online (Sandbox Code Playgroud)

我得到的是:string是ddddd,如果我将sprintf(s,"d",i)更改为"c"或"lf",我得到的只是ccccc或lflflflflf.有人对此有任何线索吗?非常感谢!

c linux

-1
推荐指数
1
解决办法
310
查看次数