英文:
Get NSHomeDirectory() in pure C
问题
我正在尝试在纯C中获取NSHomeDirectory()
。
#include <CoreFoundation/CFBundle.h>
#include <CoreFoundation/CoreFoundation.h>
void testFunc() {
printf(NSHomeDirectory());
}
英文:
I am trying to get the NSHomeDirectory()
in pure C
#include <CoreFoundation/CFBundle.h>
#include <CoreFoundation/CoreFoundation.h>
void testFunc() {
printf(NSHomeDirectory());
}
答案1
得分: 3
你需要将UTF8String
消息发送给NSHomeDirectory()
返回的NSString
对象以获取C字符串。要在纯C中执行此操作(已测试):
#include <objc/runtime.h>
#include <objc/message.h>
void *NSHomeDirectory();
void testFunc() {
puts(((const char *(*)(void *, SEL))objc_msgSend)(NSHomeDirectory(), sel_getUid("UTF8String")));
// 这里也使用puts()而不是printf()
}
*注意: 使用-framework Cocoa
编译。
英文:
You need to send the UTF8String
message to the NSString
object returned by NSHomeDirectory()
to obtain a C string. To do this in pure C (Tested):
#include <objc/runtime.h>
#include <objc/message.h>
void *NSHomeDirectory();
void testFunc() {
puts(((const char *(*)(void *, SEL))objc_msgSend)(NSHomeDirectory(), sel_getUid("UTF8String")));
// Also use puts() instead of printf() here
}
Note: Compile using -framework Cocoa
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论