Tôi đang tìm LLVM (hoặc clang) tương đương cờ -D của gcc cho phép định nghĩa macro tại dòng lệnh.LLVM tương đương với định nghĩa macro gcc -D trên dòng lệnh
Mọi con trỏ sẽ tuyệt vời.
Tôi đang tìm LLVM (hoặc clang) tương đương cờ -D của gcc cho phép định nghĩa macro tại dòng lệnh.LLVM tương đương với định nghĩa macro gcc -D trên dòng lệnh
Mọi con trỏ sẽ tuyệt vời.
Từ clang --cc1 --help
:
...
-D <macro> Predefine the specified macro
...
Như một quy tắc của ngón tay cái, giả sử rằng Clang giả lập GCC, trừ khi chứng minh khác!
Giá trị mặc định clang
gọi là một trình điều khiển gcc-như biên dịch, hỗ trợ các tùy chọn tương tự như gcc, bao gồm -D
:
: ~$ cat test/z.c
int foo() {
return FOOBAR;
}
: ~$ clang -DFOOBAR -E -c test/z.c
# 1 "test/z.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 154 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "test/z.c" 2
int foo() {
return 1;
}
Vì vậy, nếu bạn muốn thay thế gcc, chỉ cần gọi clang
. clang -cc1
gọi thành phần front-end của clang, không phải trình điều khiển trình biên dịch chung.
Tôi đang làm điều đó rồi. Vì tôi đang sử dụng một makefile, tôi kích hoạt lệnh 'make cc =/path/to/clang'. Tôi hy vọng điều đó là chính xác. – shrm
@mishr: nói chung chỉ thay thế gcc bằng clang nên hoạt động, nhưng có những cảnh báo cho trường hợp cụ thể và xây dựng trình tự. bạn có gặp phải bất kỳ lỗi cụ thể nào không? bởi vì -D * không * làm việc. –
Có -D công trình, đó là lý do tại sao tôi chấp nhận câu trả lời ở trên. Việc biên dịch BTW sẽ ổn, việc liên kết không được thực hiện và do đó không thể thực thi được. – shrm
Bạn đang sử dụng phiên bản clang nào? Mine là 3.3 và tôi không thấy tùy chọn đó khi tôi thực hiện 'clang -cc1 --help'. – shrm
@mishr: Ah, tôi dường như có 3.1 nơi tôi đang ở ngay bây giờ. Nó không chắc rằng họ thay đổi/loại bỏ một lựa chọn cơ bản như vậy, mặc dù ... –
Tôi có xu hướng đồng ý về một phần không, nhưng tùy chọn không được hiển thị trong trợ giúp. – shrm