我的Ubuntu上安装了OpenJDK和Oracle Java.如果激活的java是OpenJDK,有没有办法在bash shell中检查Oracle java的版本?
我的问题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) 我无法弄清楚为什么我会得到以下代码的错误.
对象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) 比如说,我有一个 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)
有可能做到吗?如果是,那么正确的方法是什么?谢谢
丽江
我有一个使用 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,然后构建我的项目。这是正确的方法吗?
谢谢。
任何人都可以指出如何将文件夹及其内容移动到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 文件夹。
此外,当我测试删除到垃圾箱文件夹的文件时,右键单击文件,没有“放回”意见。有谁知道为什么?
谢谢。
丽江
我在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 ×2
linux ×2
makefile ×2
applescript ×1
bash ×1
c++ ×1
destructor ×1
gcc ×1
java ×1
ubuntu ×1
x86-64 ×1
xcode ×1
xcodebuild ×1