【问题标题】:Overlap between Objective-C and MATLAB/Octave file extensionsObjective-C 和 MATLAB/Octave 文件扩展名之间的重叠
【发布时间】:2011-10-21 07:36:23
【问题描述】:

除了.m 之外,Objective-C 或 MATLAB/Octave 是否有源文件扩展名?我问是因为我将 Hello World 程序放在一个文件夹中,我不能有两个 hello.m 文件。

【问题讨论】:

    标签: objective-c matlab octave file-extension


    【解决方案1】:

    我看到的唯一方法是为每个程序创建子目录并将文件放在那里。您可以告诉 Obj-C 将其他扩展视为 Obj-C,但这并不能解决其他程序的问题。

    更新

    要将任何扩展编译为 Objective-C,请在命令行上使用 -x objective-c 或从目标构建设置中的“Compile Sources As”中选择 Objective-C。默认是“根据文件类型”,这意味着只有 .m 文件被编译为 Objective-C。

    FWIW,Objective-C++ 和 Objective-C 之间有许多细微的差别。正如我上面已经说过的,我自己会使用子文件夹来分隔 .m 文件。

    【讨论】:

    • 如何告诉 Obj-C 在 Objc-C 中处理其他扩展?
    • 在命令行中使用 -x objective-c 或在 Targets 设置中使用“Compile Sources As”(显示全部)。
    【解决方案2】:

    MATLAB 无法找到文件,除非它们具有 .m 扩展名(非常重要!)

    现在我对 Objective-C 知之甚少,我认为它是 C 的超集(就像 C++ 一样)。如果是这样,并且类似于 C/C++,您应该能够将任何文件名作为输入传递给编译器:

    g++ -c myfile.m.txt
    

    【讨论】:

    • 即使编译器可以处理单个异常的 ObjC 文件扩展名,各种头文件也可能无法很好地处理它们。
    • 它是 C 的超集,不像 C++,它不是 C 的超集。
    • @mcandre:我想正如其他人所建议的那样,最好的办法是将文件分开放在不同的文件夹中
    【解决方案3】:

    一种解决方法是对 Objective-C 使用 .mm.mm 用于 Objective-C++ 源文件,它是 Objective-C 的超集,所以它应该可以正常编译。

    这绝不是一个干净的解决方案。更好的方法是按照 Ruddy Velthuis 的建议将您的文件夹重新组织为子文件夹,或者简单地将您的源文件称为 hello-objective-c.mhello-matlab.m

    【讨论】:

    • Objective-C 和 Objective-C++ 之间有许多细微的差别。我会使用子文件夹或编译器设置来为 Objective-C 使用除 .m 之外的其他扩展名。
    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2014-07-16
    • 2012-03-12
    相关资源
    最近更新 更多