Where is PATH_MAX defined in Linux?
Its in linux/limits.h. #define PATH_MAX 4096 /* # chars in a path name including nul */ #include <linux/limits.h> char current_path[PATH_MAX]; PATH_MAX has some flaws as mentioned in this blog (thanks paulsm4)
Its in linux/limits.h. #define PATH_MAX 4096 /* # chars in a path name including nul */ #include <linux/limits.h> char current_path[PATH_MAX]; PATH_MAX has some flaws as mentioned in this blog (thanks paulsm4)
From the docs: -g Produce debugging information in the operating system’s native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information. On most systems that use stabs format, -g enables use of extra debugging information that only GDB can use; this extra information makes debugging work better in GDB but … Read more
Here are some up-to-date albeit narrow findings of mine with GCC 4.7.2 and Clang 3.2 for C++. UPDATE: GCC 4.8.1 v clang 3.3 comparison appended below. UPDATE: GCC 4.8.2 v clang 3.4 comparison is appended to that. I maintain an OSS tool that is built for Linux with both GCC and Clang, and with Microsoft’s … Read more
The C11 standard says this, 6.8.5/6: An iteration statement whose controlling expression is not a constant expression,156) that performs no input/output operations, does not access volatile objects, and performs no synchronization or atomic operations in its body, controlling expression, or (in the case of a for statement) its expression-3, may be assumed by the implementation … Read more
LLVM originally stood for “low-level virtual machine”, though it now just stands for itself as it has grown to be something other than a traditional virtual machine. It is a set of libraries and tools, as well as a standardized intermediate representation, that can be used to help build compilers and just-in-time compilers. It cannot … Read more
As you have found out yourself, the difference between the two options is whether GNU extensions that violates/extend the C++ standard are enabled or not. The GNU C++ extensions are described here. You can also use most of the GNU C extensions (described here) in your C++ programs. It would be also useful to read … Read more
Debian / Ubuntu The problem is you likely only have the gcc for your current architecture and that’s 64bit. You need the 32bit support files. For that, you need to install them sudo apt install gcc-multilib
Several of the answers in the question you link talk about rewriting the code to be branchless and thus avoiding any branch prediction issues. That’s what your updated compiler is doing. Specifically, clang++ 10 with -O3 vectorizes the inner loop. See the code on godbolt, lines 36-67 of the assembly. The code is a little … Read more
I agree that the description is confusing. Since I just grasped them, I’ll try to summarize: (__bridge_transfer <NSType>) op or alternatively CFBridgingRelease(op) is used to consume a retain-count of a CFTypeRef while transferring it over to ARC. This could also be represented by id someObj = (__bridge <NSType>) op; CFRelease(op); (__bridge_retained <CFType>) op or alternatively … Read more
Given some C/C++ file foo.c: > clang -S -emit-llvm foo.c Produces foo.ll which is an LLVM IR file. The -emit-llvm option can also be passed to the compiler front-end directly, and not the driver by means of -cc1: > clang -cc1 foo.c -emit-llvm Produces foo.ll with the IR. -cc1 adds some cool options like -ast-print. … Read more