V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuegy
V2EX  ›  C++

Not yet implemented; 是哪门子 C++语法?

  •  
  •   xuegy · 2021-04-07 11:28:25 +08:00 · 2606 次点击
    这是一个创建于 1324 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ho121
        1
    ho121  
       2021-04-07 11:39:28 +08:00
    #ifdef darwin
    {
    char path[1024];
    uint32_t size = sizeof(path);
    if (_NSGetExecutablePath(path, &size) == 0) {
    exePath=string(path);
    }
    }
    #elif defined(__linux__)
    {
    const int bufSize=1024;
    char path[bufSize];
    label length=readlink("/proc/self/exe",path,bufSize-1);
    path[length]='\0';
    exePath=string(path);
    }
    #else
    Not yet implemented;
    #endif

    意思是,当 darwin 和__linux__都没被定义的情况下,这段代码会被预处理为:Not yet implemented;
    于是编译不会通过,这是故意为之。

    Clang 报错估计是参数有问题。
    cmdOptionKana
        2
    cmdOptionKana  
       2021-04-07 11:39:39 +08:00
    标准 != 实现
    ho121
        3
    ho121  
       2021-04-07 11:41:57 +08:00
    @ho121 意思是:我只支持 darwin 和 linux,其它环境下没有实现,不给编译
    xuegy
        4
    xuegy  
    OP
       2021-04-07 11:45:45 +08:00   ❤️ 1
    @ho121 有没有可能是 GCC 只要进入了某个分支其他的就不管了,Clang 非常倔强的要保证每个分支语法都对?
    augustheart
        5
    augustheart  
       2021-04-07 12:02:04 +08:00 via Android
    想起来当年 GCC 的正则表达式的实现
    agagega
        6
    agagega  
       2021-04-07 12:49:46 +08:00
    #ifdef __linux__
    int main () {}
    #else
    Not implemented;
    #endif

    clang 也是不会管的
    bp0
        7
    bp0  
       2021-04-07 13:04:39 +08:00
    这种不是应该

    #error “Not yet implemented”

    这样可以自定义错误消息,更具可读性。
    chiu
        8
    chiu  
       2021-04-07 13:29:31 +08:00
    请问有 Clang 报错的 error message 吗?
    预处理后,如果汇编阶段看到的代码是前面两个 #if 分支之一,应该不会有什么语法错误,但如果汇编看到的是 #else 分支的 code,那应该 Clang/GCC 都会报错。
    xuegy
        9
    xuegy  
    OP
       2021-04-07 13:36:19 +08:00
    @chiu not 错,yet 错,implemented 错,就这样...
    LANB0
        10
    LANB0  
       2021-04-07 13:58:41 +08:00
    检查两个条件编译宏吧,预处理阶段应该不会检查代码语法错误的
    chiu
        11
    chiu  
       2021-04-07 14:01:15 +08:00
    @xuegy #9
    嗯,你正文中描述的情况应该是 GCC 的汇编没有看到 Not yet implemented; 这样的 code
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.